发布时间 : 星期五 文章用定时器以间隔500MS在6位数码管上依次显示0到F更新完毕开始阅读24131eefaa00b52acec7ca00
用定时器以间隔500MS在6位数码管上依次显示0,1,2,3….C,D,E,F 说明:本程序是基于郭天祥老师的TX-1C实验板设计,晶振值为12MHZ
#include
#define uint unsigned int #define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; sbit dula=P2^6; //声明U1锁存器的锁存端 sbit wela=P2^7; //声明U2锁存器的锁存端 uchar t0,a;
void intt(); //声明初始化函数 void display(); //声明显示子函数 void delay(uint x) //延时 { uint i,j; for(i=x;i>0;i--) for(j=100;j--;j>0); }
void main() {
a=0; //设初值 intt(); while(1) { }
void intt() //初始化函数 {
TMOD=0x01;
//设置定时器0为工作方式
}
TH0=(65536-50000)/256; //装初值50ms一次中断 TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; }
void T0_timer()interrupt 1 {
TH0=(65536-50000)/256; //重装初值
//开总中断
//开定时器0中断
//启动定时器0
TL0=(65536-50000)%6; t0++; {
// 如果到了10次,说明500ms时间到
if(t0==10) {
t0=0; //把t0清0重新再计20次
display(); //调用显示子函数
a++;
if(a==16) //a=16,说明已经显示到F a=0;
//重新从0开始显示
}
} }
void display() {
dula=1;
P0=table[a]; //送段选数据 dula=0; P0=0xff; wela=1; P0=0xc0;
//送位选数据
//显示子函数
}
wela=0; delay(5);