单片机100例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试说明以上函数的区别。
02、Βιβλιοθήκη Baidu左到右的流水灯
intrins.h:内部函数描述:
指令函数名: _crol_,_irol_,_lrol_
它返回包含于字符串内的数字,字符串中是一个适当类型的数值。
02、从左到右的流水灯
举例:
_crol_, _cror_:
如二进制数为01010101 那么_crol_(1) 左移1位后将高位补低位。
//主程序 void main() { uchar i; P2=0x01; while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); //P2 的值向左循环移动 DelayMS(150); } for(i=0;i<7;i++) { P2=_cror_(P2,1); //P2 的值向右循环移动 DelayMS(150); }
03、8 只 LED 左右来回点亮
名称:8 只 LED 左右来回点亮 。 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果 。
LED共阴极接线。
03、8 只 LED 左右来回点亮
名称:8 只 LED 左右来回点亮 。 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果 。
《单片机C语言程序设计实训 100 例—基于 8051仿真》案例 第01篇、基础程序设 计 :include<reg51.h>
sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; /* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0;
//主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0 的值向 左循环移动 DelayMS(150); } }
02、从左到右的流水灯
LED是共阳极接线。
02、从左到右的流水灯
03、8 只 LED 左右来回点亮
名称:8 只 LED 左右来回点亮 。 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果 。
01、闪烁的 LED :说明:LED 按设定的时间间隔闪烁
R2的值不 能太大。
《单片机C语言程序设计实训 100 例—基于 8051仿真》案例 第01篇、基础程序设计
思考题:
int main ( int argc, char *argv[] ); int main () ; void main() ;
#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } }
《单片机C语言程序设计实训 100 例—基于 8051仿真》案例 第01篇、基础程序设计
#include<reg51.h>
01、闪烁的 LED :说明:LED 按设定的时间间隔闪烁 //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } }
04、花样流水灯
#include<reg51.h> #define uchar unsigned char #define uint unsigned int
按预设的多种花样变换显示 。
uchar code Pattern_P0[]= { 0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; uchar code Pattern_P2[]= { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff };
#ifndef __REG51_H__ #define __REG51_H__ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C;
//(80C51寄存器)
#define uchar unsigned char //(宏定义) #define uint unsigned int //(宏定义) sbit LED=P1^0;// (点亮P1.0口灯)
注释:i<120
uint:最大值为65535; Uchar:最大值为255;
《单片机C语言程序设计实训 100 例—基于 8051仿真》案例 第01篇、基础程序设计
结果10101010。
02、从左到右的流水灯 说明:接在 P0 口的 8 个 LED :从左到右循环依次点亮,产生走马灯效果 。
#include<reg51.h> #include<intrins.h> ;//内部函数描述 #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } }