藍橋杯單片機必備知識---------(1)顯示函式
全域變數
code unsigned char tab[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//共陽極斷碼值0~9,10為全滅
uchar dspbuf[8] = {10, 10, 10, 10, 10, 10, 10, 10 };
主函式
void main()
{
cls_buzz(); //關閉buzz
AUXR = 0x80; //將定時器0設定為12分頻,定時器時鐘1T模式
TMOD = 0x30; //屏蔽定時器1,設定定時器0為定時模式
TL0 = 0xcd; //填入初始值,設定時間為1ms
TH0 = 0xd4;
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
ET0 = 1; //允許定時器0中斷
EA = 1; //開啟CPU總中斷允許
while(1){}; //死回圈
}
中斷函式
void time0(void) interrupt 1
{
display();
}
顯示函式
//顯示函式
void display()
{
static unsigned char dspcom = 0;
P2 = (P2 & 0x1f) | 0xe0; //消影
P0 = 0xff;
P2 = 0x1f;
P2 = (P2 & 0x1f) | 0xc0; //位選
P0 = 1 << dspcom;
P2 = 0x1f;
P2 = (P2 & 0x1f) | 0xe0; //顯示
P0 = tab[dspbuf[dspcom]];
P2 = 0x1f;
if (++dspcom == 8) dspcom = 0;
}
測驗的時候,可以將dspbuf[]中的值,全部置為1;
以下是測驗結果

整個代碼粘貼
#include <stc15f2k60s2.h>
#define uchar unsigned char
#define uint unsigned int
code unsigned char tab[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//共陽極斷碼值0~9,10為全滅
uchar dspbuf[8] = {10, 10, 10, 10, 10, 10, 10, 10 };
void main()
{
cls_buzz(); //關閉buzz
AUXR = 0x80; //將定時器0設定為12分頻,定時器時鐘1T模式
TMOD = 0x30; //屏蔽定時器1,設定定時器0為定時模式
TL0 = 0xcd; //填入初始值,設定時間為1ms
TH0 = 0xd4;
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
ET0 = 1; //允許定時器0中斷
EA = 1; //開啟CPU總中斷允許
while(1){}; //死回圈
}
void time0(void) interrupt 1
{
display();
}
void display()
{
static unsigned char dspcom = 0;
P2 = (P2 & 0x1f) | 0xe0; //消影
P0 = 0xff;
P2 = 0x1f;
P2 = (P2 & 0x1f) | 0xc0; //位選
P0 = 1 << dspcom;
P2 = 0x1f;
P2 = (P2 & 0x1f) | 0xe0; //顯示
P0 = tab[dspbuf[dspcom]];
P2 = 0x1f;
if (++dspcom == 8) dspcom = 0;
}
AUXR 輔助暫存器

定時器0,1相關暫存器


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225914.html
標籤:其他
上一篇:《資料結構與演算法經典》、《吃透演算法只為面試》、《程式員代碼面試指南 》,王者上分必備,憑借這些筆記,拿下多個大廠offer
下一篇:無人機——遙控器篇(三)
