|
楼主 |
发表于 2010-1-24 10:34:16
|
显示全部楼层
额~谢谢楼上的
1302可以从内部直接读取时间是指电脑内部么?
另外74HC573还不是很明白,你看我做的一个八段数码管动态显示的一个实验程序:
#include <reg52.h>
#include <intrins.h>
unsigned char hour1, hour2,hour=0;
unsigned char min1, min2,minite=0;
unsigned char sec1, sec2,second=0;
int count = 0;
unsigned char tab[10] =
{
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
void delay(int ms)
{
int i;
for (i=0 ; i<ms; i++)
;
}
void time(void) interrupt 1 using 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
count++;
if (count == 100)
{
count = 0;
second++;
}
sec1 = tab[second/10];
sec2 = tab[second%10];
if (second == 60)
{
second = 0;
minite++;
}
min1 = tab[minite/10];
min2 = tab[minite%10];
if (minite == 60)
{
minite = 0;
hour++;
}
hour1 = tab[hour/10];
hour2 = tab[hour%10];
}
void time1(void) interrupt 0 using 2
{
TR0 = !TR0;
}
void main()
{
TMOD = 0x01;
TH0=(65536-25000)/256;
TL0=(65536-25000)%256;
IP = 0x80;
EX0=1;//外部中断0设置
IT0=1;
EA = 1;
ET0 = 1;
TR0 = 1;
hour1 = tab[1];
hour2 = tab[2];
min1 = tab[0];
min2 = tab[0];
sec1 = tab[0];
sec2 = tab[0];
while (1)
{
P2 = 0;
P0 = hour1;
delay(10);
P2 = 1;
P0 = hour2;
delay(10);
P2 = 2;
P0 = 0x40;
delay(10);
P2 = 3;
P0 = min1;
delay(10);
P2 = 4;
P0 = min2;
delay(10);
P2 = 5;
P0 = 0x40;
delay(10);
P2 = 6;
P0 = sec1;
delay(10);
P2 = 7;
P0 = sec2;
delay(10);
}
}
这里不是直接用P2 = 0、1、2、3、4、5、6、7就控制了那个数码管亮么?
貌似没有用到74HC573吧? |
|