|
#include <reg52.h> //51單片機(jī)內(nèi)核的庫,里面存放一些地址定義
sbit ADDR0=P1^0;
sbit ADDR1= P1^1;
sbit ADDR2=P1^2; //此部分需refer相應(yīng)的硬件電路
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
typedef unsigned char uint8;
uint8 count=0; //定時(shí)器溢出累加器
void time (void); //1s定時(shí)函數(shù)原型
int main(void)
{
uint8 index=0;
uint8 num[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e}; //定義一個(gè)數(shù)組里面存放數(shù)碼管0~f真值表常量(refer 硬件)
uint8 *pn=num; //將數(shù)組首地址賦值給指針變量
ADDR3=1;
ENLED=0; //使能3-8譯碼器(refer 硬件)
ADDR0=1;
ADDR1=0;
ADDR2=1;
while(1)
{
while(index++<16) //數(shù)組訪問索引直到數(shù)組末尾即num[15]
{
P0=*(pn++); //指針變量讀取數(shù)組內(nèi)容
time(); //調(diào)用一秒定時(shí)函數(shù)
}
pn=num; //指針變量賦初值為了循環(huán)讀取數(shù)組content
index=0;
}
}
void time (void) //1S定時(shí)函數(shù)此函數(shù)返回值為空型且不接受參數(shù)
{
TF0=0;
TR0=1; //定時(shí)器初始化相關(guān)
TH0=0Xb8;
TL0=0X00; //20ms初值
TMOD=0X01;
while(count<50) //20ms 循環(huán)50次 即完成1s定時(shí) 1s=1000ms
if(TF0)
{
TF0=0;
TH0=0Xb8; //非中斷溢出需軟件清零并賦初值
TL0=0X00;
count++;
}
count=0; //count清零為了下次繼續(xù)計(jì)數(shù)}
|
|