題目要求用定時器1,中斷方式2實現(xiàn)數(shù)碼管顯示0~9,那你就需要用到定時中斷
1,先去看如何初始化定時器,如何開啟中斷
2,中斷服務(wù)函數(shù)以及中斷號,如何編寫中斷服務(wù)函數(shù)。
3,中斷服務(wù)函數(shù)內(nèi)判斷1s時間是否到達(當當?shù)亩〞r器模式2只有八位,故只有0~255),即使初值設(shè)定最小,也只能在12T模式下定時大概256us,所以在中斷服務(wù)函數(shù)里面你就要用變量計算好到達1s的時間
- #include<reg52.h>
- unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char j=0; //數(shù)碼管循環(huán)顯示變量
- void Time1_Init();
- //不包含數(shù)碼管位選,數(shù)碼管位自行添加//
- void main()
- {
- Time1_Init();
- while(1);
- }
- void Time1_Init()
- {
- TMOD=0X20; //定時器1模式2
- TH1=0x05; //定時---250us;
- TL0=0X05; //重裝值
- ET1=1; //定時器1中斷使能
- EA=1; //總中斷使能
- TR1=1; //開啟定時器1
- }
- void Time_Interrpt() interrupt 3
- {
- unsigned char i; //計數(shù)變量
-
- i++;
- if(i==4000) //定時到達1s
- {
- i=0; //初始化計數(shù)變量i
- j++;
- if(j==10)
- j=0;
- P1=smgduan[j];
- }
- }
復制代碼
|