定时程序求助
各位大神好!小弟刚开始学单片机,什么都不太会,刚处于初级自学阶段,有个程序想请教各位大神~~(很2很无语的问题~不过小弟刚学真心不懂,只有请教神坛的各位大神了),程序如下:#include <reg52.h>
unsigned char code shiwei_P3[] = {0x17,0x01,0x0e,0x0b,0x19,0x1b,0x1f,0x01,0x1f,0x1b};
unsigned char code shiwei_P2[] = {0x30,0x20,0x30,0x30,0x20,0x10,0x10,0x30,0x30,0x30};
unsigned char code gewei_P1[]= {0xef,0x29,0xdd,0x7d,0x3b,0x77,0xf7,0x2d,0xff,0x7f};
unsigned int i;
unsigned int num = 0;
void Delay_xs();
void main(){
TMOD = 0x01;//定时器工作方式:定时器0工作方式1
TH0 = (65536-20000)/256; //定时60ms初值
TL0 = (65536-20000)%256;
EA = 1; //开总中断
ET0 = 1; //开定时器0中断
TR0 = 1; //启动定时器0
for(i=99;i>0;i--){
P1 = shiwei_P3;
P2 = shiwei_P2;
P3 = gewei_P1;
Delay_xs();
if(i == 1){
i = 99;
}
}
}
/*定时1分钟:num == 1000;*/
void Delay_xs() interrupt 1{
TH0 = (65536-20000)/256; //重装初值
TL0 = (65536-20000)%256;
num++;
if(num == 3500){ //定时3分30秒
num = 0;
}
}
问:我怎样才能把这个定时3分30秒的中断放进那个P1,P2,P3口显示的里面?本人只会用delay();来做延时~~先谢过了! 其实没看懂楼主要表达的意思。是要每隔3分半显示一次、还是每秒显示定时的呢 devcang 发表于 2012-10-25 13:26 static/image/common/back.gif
其实没看懂楼主要表达的意思。是要每隔3分半显示一次、还是每秒显示定时的呢 ...
是定时1个3分半的定时 a61935839 发表于 2012-10-25 14:19 static/image/common/back.gif
是定时1个3分半的定时
你要显示的,是哪个内容。
这个意思 ?
if(num == 3499){
//显示
} devcang 发表于 2012-10-25 14:21 static/image/common/back.gif
你要显示的,是哪个内容。
其实这就是一个99LED的倒计,上面的位码已经标明,我每隔3分半钟减1位,99-->98,如此循环到1然后在到99循环下去~那个for循环就是一个display()显示函数,不知道中断由哪里进去 本帖最后由 xiaoyigechaos 于 2012-10-25 15:15 编辑
定时是定时了但定时器里面没干活
楼主的程序
看晕了 Delay_xs();
楼主可以把这句换成
while(num <= 3500);
num = 0;
然后将中断里面的
if(num == 3500){ //定时3分30秒
num = 0;
}
删除。
这样你就会在等很久很久了。 xiaoyigechaos 发表于 2012-10-25 14:57 static/image/common/back.gif
定时是定时了但定时器里面没干活
楼主的程序
看晕了
请问我的程序怎样才能把控制P1,P2,P3口的程序写进定时器呢?就是那个for循环的 我是这样想的把 for改成while(1)
然后再定时器里面改i的值i定义成全局变量
你试试吧 我已经半年没接触程序了底子也不好0.0 xiaoyigechaos 发表于 2012-10-25 15:23 static/image/common/back.gif
我是这样想的把 for改成while(1)
然后再定时器里面改i的值i定义成全局变量
你试试吧 我已经半 ...
哈哈,我已经修改好啦~拿去试试,应该成功了!非常感谢!!
页:
[1]