首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

定时计数器有关问题(秒表实验)

2013-04-05 
定时计数器问题(秒表实验)#include reg51.h#define uchar unsigned char#define uint unsigned int int

定时计数器问题(秒表实验)
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int 
int s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit key =P2^0;
sbit key1= P2^1;
void disp(int i,int j);
void delay(int a);
uchar xianshi=0, shijian=0;
void main()
{
TMOD=0x01; //定义定时器
TH0=0xFC;  //定时器初值1ms
TL0=0x66;


 
TR0=1;//启动定时器 
EA=1; //启动中断
ET0=1;  //允许开启中断

while(1)
{
  
disp((xianshi/10),(xianshi%10));

if(xianshi==60)
{
xianshi=0;
}
}
}
void int_0() interrupt 1
{
shijian++;
if(shijian==1000)   //加到1000不就是1S吗?为何加不到1000呢?到256就不会动了!
{
xianshi++;
}

TH0=0xFC;
TL0=0x66; 
 

}  
void disp(int i,int j)
{
 key=1;
key1=0;
P1=s[j];
delay(10);
key=0;
key1=1;
P1=s[i];
delay(10); 

}  
void delay(int a)
{
int i,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--);

[解决办法]
if(shijian==1000)   //加到1000不就是1S吗?为何加不到1000呢?到256就不会动了!

你看清楚你前面的定义uchar xianshi=0, shijian=0;

char类型最大是256,当然不会到1000了,应该定义成int类型的

热点排行