单片机c51学习
我刚入手单片机,在研究c51的秒表设计,要有两个按键控制开始于暂停,两个按键分别在p1.0和p1.1两个端口,但是现在还没有头绪,请问高手教教我!谢啦
就是要用 单片机中断系统, 定时/计数中断, 可以去 看看,
我这里也有 个时钟程序,可以轻松改成秒表,不懂的再问我
#include "REG52.h"
unsigned char SHUMA[4];
unsigned int shizhong=0;
unsigned char mabiao[10]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char k=0;
void delay()
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++);
}
void sjcf(void)
{
SHUMA[0]= shizhong/1000;
SHUMA[1]= (shizhong- SHUMA[0]*1000)/100;
SHUMA[2]= (shizhong- SHUMA[0]*1000- SHUMA[1]*100)/10;
SHUMA[3]= shizhong % 10;
}
void display(void)
{
sjcf();
P0=mabiao[SHUMA[0]]; // 2
P1=0xfe;
delay();
P0=mabiao[SHUMA[1]]; // 0
P1=0xfd;
delay();
P0=mabiao[SHUMA[2]]; // 1
P1=0xfb;
delay();
P0=mabiao[SHUMA[3]]; //0
P1=0xf7;
delay();
}
void cpu_initial(void)
{
EA=1;
TMOD = 0x01;
ET0=1;
EX0=1;
EX1=1;
TR0=1;
TH0=0x3c;
TL0=0xb0;
}
void int0_int(void) interrupt 0
{
TR0=0;
}
void timer0_int(void) interrupt 1
{
k ++;
TH0=0x3c;
TL0=0xb0;
if (k == 20)
{
k=0;
shizhong++;
}
}
void int1_int(void) interrupt 2
{
TR0=1;
}
void main(void)
{
cpu_initial();
while(1)
{
display();
}
}
这个是秒钟,你稍微改下TH0,TL0初值,就可以成秒表了