发表于:2010/8/14 15:04:44
#0楼
交代一下前提,本人对单片机的兴趣由来已久,但是一直没什么突破。一直停留在定时和中断前的水平。这几天潜心修炼,看视频看电子书,终于搞出一个来让我兴奋的时钟程序。(我是低手,高手不要鄙视啊)
数码管的断选是p0,位选是p2,共八个。开机显示12-00-00然后计时。简单的没有其他功能的。
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//共阳极数码管0123456789-
uchar count,second,minute,hour=12;
void delay1ms(uint z)//郭天祥视频里德1ms延时程序
{
uint x,y;
{
for(x=z;x>0;x--)
{
for(y=110;y>0;y--);
}
}
}
void t0() interrupt 1 //定时器0
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
void main()
{
tmod=0x01;
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
et0=1;
tr0=1;
ea=1;
while(1)
{
p2=0xff;
p2=0x7f;
p0=table[second%10];
delay1ms(2);
p2=0xbf;
p0=table[second/10];
delay1ms(2);
p2=0xdf;
p0=table[10];
delay1ms(2);
p2=0xef;
p0=table[minute%10];
delay1ms(2);
p2=0xf7;
p0=table[minute/10];
delay1ms(2);
p2=0xfb;
p0=table[10];
delay1ms(2);
p2=0xfd;
p0=table[hour%10];
delay1ms(2);
p2=0xfe;
p0=table[hour/10];
delay1ms(2);
}
}
显示的结果就是从12点开始走表。虽然最最简单的程序,但是还是对我有不小的鼓舞,哈哈。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=121286&Name=h661005
数码管的断选是p0,位选是p2,共八个。开机显示12-00-00然后计时。简单的没有其他功能的。
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//共阳极数码管0123456789-
uchar count,second,minute,hour=12;
void delay1ms(uint z)//郭天祥视频里德1ms延时程序
{
uint x,y;
{
for(x=z;x>0;x--)
{
for(y=110;y>0;y--);
}
}
}
void t0() interrupt 1 //定时器0
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
void main()
{
tmod=0x01;
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
et0=1;
tr0=1;
ea=1;
while(1)
{
p2=0xff;
p2=0x7f;
p0=table[second%10];
delay1ms(2);
p2=0xbf;
p0=table[second/10];
delay1ms(2);
p2=0xdf;
p0=table[10];
delay1ms(2);
p2=0xef;
p0=table[minute%10];
delay1ms(2);
p2=0xf7;
p0=table[minute/10];
delay1ms(2);
p2=0xfb;
p0=table[10];
delay1ms(2);
p2=0xfd;
p0=table[hour%10];
delay1ms(2);
p2=0xfe;
p0=table[hour/10];
delay1ms(2);
}
}
显示的结果就是从12点开始走表。虽然最最简单的程序,但是还是对我有不小的鼓舞,哈哈。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=121286&Name=h661005