新手關於單片機的一個小程序
  
流程圖 Protues仿真圖 心得體會在這次實驗過程中,有個于我來說比較難的地方,對于按鍵如何讓其對數(shù)碼管的控制可以做到隨時控制,一開始設計的程序對讓數(shù)碼管顯示,然后把按鍵服務放在定時中斷函數(shù)里。這樣數(shù)碼管就能做到隨時的改變時間了,我發(fā)現(xiàn)小組合作十分有用,和別人交流可以很大程度上拓展你的思維,對完善程序有著很大的幫助!
單片機源程序如下:
- #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};//建立數(shù)模
- 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];//數(shù)碼管顯示
- i++;
- if(i==100) i=0;
- }}}}
- void T0_srv (void) interrupt 1 using 1 //定時中斷函數(shù)
- { 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 //中斷函數(shù)(INTO)
- {
- if(~key2){
- if(~key2)
- {
- i=0;
- while(~key2);
- }
- }
- }
復制代碼
完整的Word格式文檔51黑下載地址:
實驗三 余江虎 B16040321.docx
(110.87 KB, 下載次數(shù): 21)
2018-4-23 18:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|