打印

定时程序问题

[复制链接]
1254|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2011-10-24 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的想法是用定时器0每0.1ms产生一个脉冲,然后用一个变量对时间计数,然后让LED(P2_0)灯亮 一秒再灭一秒。
代码:#include <reg52.h> //预处理命令
unsigned int timeC;
sbit P2_0 = 0xA0^0;
sbit P2_1 = 0xA0^1;

void initCom(){
//SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x22; //定时器0,1均工作方式2
//PCON|= 0x80;
TH1 = 0xF3; //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TH0 = 0x9C; // 计时器0的定时值为0.1ms
TL0 = 0x9C;
//ES = 1; //开串口中断
EA = 1; // 开总中断
TR0 = 1; // 定时器0可用
TR1 = 1; // 定时器1可用
// IE = 0x0;
P2 = 0xff; //关LED指示
}

void timer(void) interrupt 1 using 1{    // 中断程序,由定时器0产生中断
timeC++;
}

void main(){ // 主程序
initCom();
while(1){
if(timeC<10000){
P2_0 = 0;               //点亮LED
}
if(timeC>10000){
P2_0 = 1;               //灭LED
}
if(timeC>20000){
timeC = 0;
}
}
}



程序编译下装都没有问题,就是单片机执行的时候LED常亮了,没有达到设计的效果,请帮我看一下,我的程序的问题出在哪儿,谢谢

相关帖子

沙发
火箭球迷| | 2011-10-24 15:39 | 只看该作者
单步调试一下

使用特权

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

本版积分规则

304

主题

2313

帖子

0

粉丝