求解答
在做一个两位数码管显示的秒表,使用中断方式能正确的进行显示,在使用查询方式时,十位数不显示,不知道什么原因了,求各路大佬给解答一下啊。下面是程序:/功能:00~99秒的简易秒表设计
#include <reg51.h>
//函数名:delay1s()
//函数功能:T1在工作方式1的1s延时函数,采用查询方式实现
//形式参数:无
//返回值:无
void delay1s()
{
unsigned char i;
for(i=0;i<20;i++)
{
TH1=(65536-50000)/256; //设置T1计数初值高8位,定时时间50ms
TL1=(65536-50000)%256; //设置T1计数初值低8位
ET1=0;
TR1=1;//启动T1
while(!TF1);//查询计数是否溢出,即定时50ms时间到,TF1=1
TF1=0;//50ms定时时间到,将T1溢出标志位TF1清零
}
}
//函数名:disp
//函数功能:将i的值显示在两个动态连接的数码管上
//形式参数:i,取值范围0~99
//返回值:无
void disp(unsigned char i)
{
unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//定义0~9显示码,共阴极数码管
unsigned char j;
P2=0xff;
P0=led; //i的高位显示码送到段控制口
P2=0x08; //高位数码管位选
for(j=0;j<100;j++); //延时
P2=0xff;
P0=led; //i的低位显示码送到段控制口
P2=0x04; //低位数码管位选
for(j=0;j<100;j++); //延时
}
void main() //主函数
{
unsigned char miao=0; // 定义秒计数器
TMOD=0x10; //设置工作方式1
TH1=(65536-50000)/256; //设置T1计数初值高8位,定时时间50ms
TL1=(65536-50000)%256; //设置T1计数初值低8位
ET1=0;
TR1=1; //启动T1开始计数
while(1)
{
disp(miao); //显示秒计数器值
delay1s(); //调用延时函数
miao++;//秒计数器加1
if(miao==100)miao=0; //秒计数器满,则从0开始计数
}
}
//功能:00~99秒的简易秒表设计
#include <reg51.h>
//全局变量定义
unsigned char count=0; //对50ms定时时间进行计数
unsigned char miao=0; //秒计数器
//函数名:timer_1()
//函数功能:定时器T1中断函数,T1在工作方式1下没50ms产生中断,执行该中断函数
//形式参数:无
//返回值:无
void timer_1() interrupt 3 //T1的中断类型号为3
{
TH1=(65536-50000)/256; //重新设置T1计数初值高8位
TL1=(65536-50000)%256; //重新设置T1计数初值低8位
count++; //50ms计数器加1
if(count==20) //1s时间到
{
count=0; //50ms计数器清0
miao++; //秒计数器加1
if(miao==100)miao=0;//miao计数到100,则从0开始计数
}
}
//函数名:disp
//函数功能:将i的值显示在两个动态连接的数码管上
//形式参数:i,取值范围0~99
//返回值:无
void disp(unsigned char i)
{
unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//定义0~9显示码,共阴极数码管
unsigned char j;
P0=0xff;
P2=0x08; //高位数码管位选
P0=led; //i的高位显示码送到段控制口
for(j=0;j<200;j++); //延时
P0=0xff;
P2=0x04; //低位数码管位选
P0=led; //i的低位显示码送到段控制口
for(j=0;j<200;j++); //延时
}
void main() //主函数
{
TMOD=0x10; //设置T1工作方式1
TH1=(65536-50000)/256; //设置T1计数初值高8位
TL1=(65536-50000)%256; //设置T1计数初值低8位
ET1=1; //开放T1中断允许
EA=1; //开放总中断允许
TR1=1; //启动T1开始计数
while(1){
disp(miao); //显示秒计数器值
}
}
页:
[1]