求大佬帮助

2019-03-24 17:04发布

题目要求:用定时器与中断制作秒表,并且限定时间,到达时间,P13灯亮。
#include <STC12C5A60S2.H>
unsigned char num[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
unsigned char buff[3]={0XFF,0XFF,0XFF};
unsigned int cnt=0;
void main(){ unsigned long sec=0;
int i=0;
P11=0;
TMOD=0X01;
TH0=0XF5;
TL0=0X96;
TR0=1;
EA=1;
ET0=1;
IT0=0;
while(1)
{ if (TF0==1)
TF0=0;
TH0=0XF5;
TL0=0X96;
cnt++;
if(cnt>=1000)
{cnt=0;
sec++;
buff[0]=num[sec%10];
buff[1]=num[sec/10%10];
buff[2]=num[sec/100%10];}
switch(i)
{case 0:P22=1;P21=0;P20=1;i++;P0=buff[0];break;
case 1:P22=1;P21=0;P20=0;i++;P0=buff[1];break;
case2:P22=0;P21=1;P20=1;i=0;P0=buff[2];break;
default:break;}}}}
void it()interrupt 1
{TH0=0XF5;
TL0=0X96;
cnt++;
if (cnt>=1000) {cnt=0; P13=0; }}这是我做的,看看哪里不对,能编译执行,但实现不了功能 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
Li_Lei
1楼-- · 2019-03-24 22:52
实现不了功能太笼统了
billliu66
2楼-- · 2019-03-24 23:15
你看看你的程序,中断先将cnt归零了,你的if(cnt>=1000)后面的语句块就不可能执行了,这样就不可能实现你的目的了。

一周热门 更多>