?? ex4-8.c
字號:
/*
標(biāo)題:范例 4-8
版本:1.0
Target:89S51
程序描述:這個范例說明如何使用8051 的Port 1連接到四顆七段顯示器,PORT 0的低4位分別控制這四顆共陽七段顯示器,讓四顆共陽七段顯示器使用掃描的方式輪流
顯示數(shù)字。
這四顆七段顯示器將顯示0到 9999。 */
/* ***************************************************** */
#include <REGX51.H>
#define TIMER0_COUNT 0xFC18 /* 10000h-(12,000,000/(12*1000)) */
code
seven_seg[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,
0X90};
code scan[4]={0X0E,0X0D,0X0B,0X07};
unsigned char counter[4]={0,0,0,0};
unsigned char i=0;
int timer0_tick;
static void timer0_isr(void) interrupt TF0_VECTOR using 1
{
TR0=0;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
TR0=1;
P1=seven_seg[counter[i]];
P0=scan[i];
i++;
if(i==4) i=0;
timer0_tick++;
if (timer0_tick==1000) {
timer0_tick=0;
counter[0]++; // 個位數(shù)加1
if (counter[0]==10) { // 如果個位數(shù)等于10,則執(zhí)行以下的部分
counter[0]=0; // 個位數(shù)變成0
counter[1]++; // 十位數(shù)加1
if(counter[1]==10){ // 如果十位數(shù)等于10,則執(zhí)行以下的部分
counter[1]=0; // 十位數(shù)變成0
counter[2]++; // 百位數(shù)加1
if(counter[2]==10) { // 如果百位數(shù)等于10,則執(zhí)行
以下的部分
counter[2]=0; // 百位數(shù)變成0
counter[3]++; // 千位數(shù)加1
if(counter[3]==10) counter[3]=0;
//如果千位數(shù)等于10,則變成0
}
}
}
}
}
static void timer0_initialize(void)
{
EA=0;
timer0_tick=0;
TR0=0;
TMOD &= 0XF0;
TMOD |=0x01;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
PT0=0;
ET0=1;
TR0=1;
EA=1;
}
void main (void) {
timer0_initialize();
while (1); /* 無窮循環(huán) */
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -