单片机Word下载.docx
- 文档编号:19103202
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:15
- 大小:231.05KB
单片机Word下载.docx
《单片机Word下载.docx》由会员分享,可在线阅读,更多相关《单片机Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
}
voidmain()
uinta=0xfe;
while
(1)
{
P1=a;
delayms(1000);
a=_crol_(a,1);
}
双向流水灯实验代码:
sbitkey=P3^2;
uchari;
{
for(i=1;
i<
=7;
i++)
a=_cror_(a,1);
日期显示实验代码:
ucharcodeDIS_CODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchari=0;
uchara=0x11;
P1=0x01;
P2=DIS_CODE[2];
delayms(5);
P1=0x02;
P2=DIS_CODE[0];
P1=0x04;
P2=DIS_CODE[1];
P1=0x08;
P2=DIS_CODE[6];
P1=0x10;
P1=0x20;
P2=DIS_CODE[9];
P1=0x40;
P1=0x80;
日期显示代码优化
仿真实验
voidshow_time(uintyear,uintmonth,uintday)
uinttemp;
//显示年份
temp=year/1000;
P2=DIS_CODE[temp];
temp=year%1000;
temp=temp/100;
temp=year%100;
temp=temp/10;
temp=year%10;
//显示月份
temp=month/10;
temp=month%10;
排阻知识讲解
//显示日
temp=day/10;
temp=day%10;
否
是
否
{是
show_time(1993,9,16);
按键控制流水灯实验代码
按键消抖流程图
sbitkey=P3^2;
按键控制流水灯实验原理图
ucharkey_val=1;
bitbFlash=1;
ucharflag=0xfe;
key=1;
for(i=0;
8;
if(key_val!
=key)
key_val=key;
if(key==0)
bFlash=~bFlash;
if(bFlash)
P1=flag;
delayms(100);
flag=_crol_(flag,1);
functionaldescription:
按key时,数码管显示数字1且LED1亮,LED2灭;
按key1时,数码管显示数字2且LED2亮,LED1灭。
sbitkey1=P3^3;
sbitLED1=P1^0;
sbitLED2=P1^1;
仿真电路图
ucharcodeDIS_CODE[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x0c};
ucharkey_val=0;
P0=0xff;
P3=0xff;
key_val=0xff;
P0=DIS_CODE[11];
if(key_val!
=P3)
key_val=P3;
{
delayms(10);
LED1=0;
LED2=1;
P0=DIS_CODE[1];
}
if(key1==0)
if(key1==0)
LED1=1;
LED2=0;
P0=DIS_CODE[2];
如何实现软件“消抖”
外部中断控制实验代码:
外部中断0的响应是让数码管加1,外部中断1的响应是让数码管原先显示的数字清零。
uintg_unDisNum;
仿真实验电路图
voiddisp_num(uintnum)
ucharsep_num=0;
ucharten_num=0;
ucharhund_num=0;
ucharthou_num=0;
sep_num=num%10;
ten_num=(num%100)/10;
hund_num=(num/100)%10;
thou_num=num/1000;
P2=0x01;
P0=DIS_CODE[thou_num];
P2=0x02;
P0=DIS_CODE[hund_num];
P2=0x04;
P0=DIS_CODE[ten_num];
P2=0x08;
P0=DIS_CODE[sep_num];
}
voidint0_inter()interrupt0//interruptfunction
g_unDisNum++;
voidint1_inter()interrupt2
g_unDisNum=0;
P2=0xff;
IT0=1;
IT1=1;
EX0=1;
EX1=1;
EA=1;
disp_num(g_unDisNum);
说明:
在该程序代码中并没有对按键做抖动处理,但是在实际应用中会在中断函数中做一个按键触发的标志,而在主函数中处理按键的抖动问题。
另外中断都是比较紧急的任务,不能在中断处理函数中做太多的工作,特别是不能在中断函数中使用延时函数。
定时器中断实验代码:
外部中断0开启定时器中断,外部中断1关闭定时器中断。
定时时长1s.
sbitLED=P2^0;
ucharg_ucNum;
voidint0_inter()interrupt0//starttimer
g_ucNum=0;
TH0=0x3c;
TL0=0xb0;
TR0=1;
voidint1_inter()interrupt2//closetimer
TR0=0;
voidtimer0_inter()interrupt1//timer0
g_ucNum++;
//initial
//外部中断下降沿触发
//opentheinterruptexternally
TMOD=0x01;
ET0=1;
while
(1)
if(g_ucNum>
=20)//1s
g_ucNum=0;
LED=~LED;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机
![提示](https://static.bdocx.com/images/bang_tan.gif)