搜索
bottom↓
回复: 9

定时程序求助

[复制链接]

出0入0汤圆

发表于 2012-10-25 12:42:13 | 显示全部楼层 |阅读模式
  各位大神好!小弟刚开始学单片机,什么都不太会,刚处于初级自学阶段,有个程序想请教各位大神~~(很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[i/10];
                                P2 = shiwei_P2[i/10];
                                P3 = gewei_P1[i%10];
                                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();来做延时~~先谢过了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-10-25 13:26:57 | 显示全部楼层
其实没看懂楼主要表达的意思。是要每隔3分半显示一次、还是每秒显示定时的呢

出0入0汤圆

 楼主| 发表于 2012-10-25 14:19:22 | 显示全部楼层
devcang 发表于 2012-10-25 13:26
其实没看懂楼主要表达的意思。是要每隔3分半显示一次、还是每秒显示定时的呢 ...

是定时1个3分半的定时

出0入0汤圆

发表于 2012-10-25 14:21:35 | 显示全部楼层
a61935839 发表于 2012-10-25 14:19
是定时1个3分半的定时


你要显示的,是哪个内容。


这个意思 ?

if(num == 3499){            
    //显示
}

出0入0汤圆

 楼主| 发表于 2012-10-25 14:25:01 | 显示全部楼层
devcang 发表于 2012-10-25 14:21
你要显示的,是哪个内容。

其实这就是一个99LED的倒计,上面的位码已经标明,我每隔3分半钟减1位,99-->98,如此循环到1然后在到99循环下去~那个for循环就是一个display()显示函数,不知道中断由哪里进去

出0入4汤圆

发表于 2012-10-25 14:57:31 | 显示全部楼层
本帖最后由 xiaoyigechaos 于 2012-10-25 15:15 编辑

定时是定时了  但定时器里面没干活
楼主的程序   
看晕了

出0入0汤圆

发表于 2012-10-25 14:57:46 | 显示全部楼层
Delay_xs();
楼主可以把这句换成
while(num <= 3500);
num = 0;
然后将中断里面的
      if(num == 3500){                        //定时3分30秒
                num = 0;
        }      
删除。
这样你就会在等很久很久了。

出0入0汤圆

 楼主| 发表于 2012-10-25 15:16:39 | 显示全部楼层
xiaoyigechaos 发表于 2012-10-25 14:57
定时是定时了  但定时器里面没干活
楼主的程序   
看晕了

请问我的程序怎样才能把控制P1,P2,P3口的程序写进定时器呢?就是那个for循环的

出0入4汤圆

发表于 2012-10-25 15:23:02 | 显示全部楼层
我是这样想的  把 for  改成while(1)
然后再定时器里面改i的值  i定义成全局变量   
你试试吧   我已经半年没接触程序了  底子也不好  0.0

出0入0汤圆

 楼主| 发表于 2012-10-25 15:28:22 | 显示全部楼层
xiaoyigechaos 发表于 2012-10-25 15:23
我是这样想的  把 for  改成while(1)
然后再定时器里面改i的值  i定义成全局变量   
你试试吧   我已经半 ...

哈哈,我已经修改好啦~拿去试试,应该成功了!非常感谢!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 16:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表