新手關於單片機的一個小程序
  
流程图 Protues仿真图 心得体会在这次实验过程中,有个于我来说比较难的地方,对于按键如何让其对数码管的控制可以做到随时控制,一开始设计的程序对让数码管显示,然后把按键服务放在定时中断函数里。这样数码管就能做到随时的改变时间了,我发现小组合作十分有用,和别人交流可以很大程度上拓展你的思维,对完善程序有着很大的帮助!
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- sbit key1=P3^7;
- sbit key2=P3^2;
- bit m=0;
- uchar t=0,i=0,k=0;
- uchar n=0;
- void main()
- {
- uchar code led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//建立数模
- TMOD=0x01;//定时器模式选择
- P0=~0xff;
- P2=~0xff;
- TH0=0x3c;
- TL0=0xb0; //定时器赋初值
- TH1=0x3c;
- TL1=0xb0;
- EA=1;
- ET0=1;
- TR0=1;
- ET1=1;//定时中断初始化
- TR1=1;
- IE0=1;
- EX0=1;//中断初始化
- while(1)
- {if(k>0)
- {
- if(m)
- {
- m=0;
- P0=led_mod[i/10];
- P2=led_mod[i%10];//数码管显示
- i++;
- if(i==100) i=0;
- }}}}
- void T0_srv (void) interrupt 1 using 1 //定时中断函数
- { t++;
- if(t==20){t=0;m=1;}
- TH0=0x3c;TL0=0xb0;
- }
- void T1_srv (void) interrupt 3{
- if(~key1){
- k++;
- TR0=~TR0;
- }
- }
- void INT0_srv (void) interrupt 0 //中断函数(INTO)
- {
- if(~key2){
- if(~key2)
- {
- i=0;
- while(~key2);
- }
- }
- }
复制代码
完整的Word格式文档51黑下载地址:
实验三 余江虎 B16040321.docx
(110.87 KB, 下载次数: 21)
|