打印

单片机定时器问题

[复制链接]
926|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-4-12 18:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[code=C/C++][void main()
{
unsigned char m, j;  

TMOD=0x01; //定时器0工作模式1
TH0=0x4b;
TL0=0x6a;   
TR0=1;   
IE=0x8a;
P1=0x7f; // P1=0xff, 所有按键拉高
P3=0x4f;   

for (m=7;m>=0;m--)
{
  key();
P2=dis[m];
if(BoolHC)
{   
  displayone(m);
}
else
{
displaytwo(m);
}
  for (j=255;j>0;j--); //消除视觉暂留
if (m==0) m=8;
}
}
   
void Timer0( void ) interrupt 1 //定时器0中断处理函数
{  
// TF0=0; //溢出标记
TR0=0;   
TH0=0x3c;
TL0=0xb0; //装载初值
TR0=1; //开始计数
i++;
if(i==20) {i=0;secondL--;}
if(secondL==-1) {secondL=9;secondH--;}   
if(secondH==-1) {secondH=9;minute--;}
if(minute==0 && secondH==0 && secondL==0){EA=0;P3=0x20;P1=0xFF;}
}/code]
[code=C/C++][ void displayone(int m)
  { //显示上半场
  switch(m)   
  {  
  case 0:P0=led1[jiafenshuh]; break;   
  case 1:P0=led1[jiafenshul]; break;   
  case 2:P0=led1[0]; break;   
  case 3:P0=led1[minute]; break;  
case 4:P0=led1[secondH]; break;  
case 5:P0=led1[secondL]; break;  
  case 6:P0=led1[yifenshuh]; break;  
case 7:P0=led1[yifenshul]; break;   
  default:break;  
}  
  }/code]

相关帖子

沙发
xsgy123| | 2012-4-12 18:44 | 只看该作者
1)你的主程序在哪里无限循环?
2) 定义m无符号后,在循环语句中
  for (m=7;m>=0;m--) { }
  m从7变成0,接着是从255递减成0,再从255开始,....
3)需要定义成 int m;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝