第5章-定時器與數(shù)碼管基礎(chǔ)
軟件清零,寫程序控制
硬件清零,cpu自動完成




第一次學(xué)會定時器,之前RZ-51和TX-1C都沒學(xué)會



課后第三題
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
uchar code LedShift[] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F,
? ? ? ? ? ? ? ? ? ? ? ? ?0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD};
void main(void)
{
? ? ? ? uchar cnt = 0;
? ? ? ? uchar i = 0;
? ? ? ? ENLED = 0; // 138總開關(guān)打開
? ? ? ? ADDR3 = 1; // led選通
? ? ? ? ADDR2 = 1;
? ? ? ? ADDR1 = 1;
? ? ? ? ADDR0 = 0;
? ? ? ? TMOD = 0x01;
? ? ? ? TH0 = 0xB8;
? ? ? ? TL0 = 0;
? ? ? ? TR0 = 1;
? ? ? ? while (1)
? ? ? ? {
? ? ? ? ? ? ? ? if (TF0 == 1)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? TF0 = 0;
? ? ? ? ? ? ? ? ? ? ? ? TH0 = 0xB8;
? ? ? ? ? ? ? ? ? ? ? ? TL0 = 0;
? ? ? ? ? ? ? ? ? ? ? ? P0 = LedShift[i];
? ? ? ? ? ? ? ? ? ? ? ? if (++cnt >= 25)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cnt = 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (++i == 14)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i = 0;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}
課后第五題
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
uchar code LedChar[] = {
??? 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
??? 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
void main(void)
{
?? ?uchar cnt = 0;
?? ?uchar sec = 15;
?? ?ENLED = 0; // 138總開關(guān)打開
?? ?ADDR3 = 1; // 1000是數(shù)碼管的譯碼輸出:8
?? ?ADDR2 = 0;
?? ?ADDR1 = 0;
?? ?ADDR0 = 0;
?? ?TMOD = 0x01;
?? ?TH0 = 0xB8;
?? ?TL0 = 0;
?? ?TR0 = 1;
?? ?while (1)
?? ?{
?? ??? ?if (TF0 == 1)
?? ??? ?{
?? ??? ??? ?TF0 = 0;
?? ??? ??? ?TH0 = 0xB8;
?? ??? ??? ?TL0 = 0;
?? ??? ??? ?P0 = LedChar[sec];
?? ??? ??? ?if (++cnt >= 50)
?? ??? ??? ?{
?? ??? ??? ??? ?cnt = 0;
?? ??? ??? ??? ?sec--;
?? ??? ??? ??? ?sec &= 0x0F; //[0-15]
?? ??? ??? ?}
?? ??? ?}
?? ?}
}