3515|6

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:定时器中断的写法!!在线等 [复制链接]

题目:用定时器0实现 1个LED 灯 2秒钟 亮一次,然后熄灭,循环。 亮和灭 间隔都是2秒。  时钟 12MHZ。

最新回复

#include #define uchar unsigned char uchar counter=0; sbit P1_0=P1^0; /*定时器0方式1定时10ms,每次中断计数200次再让灯反相*/ time0() interrupt 1    {  TH0=(65535-10000)/256;    TL0=(65535-10000)%256;    if(++counter==200)        { P1_0=!P1_0;          counter=0;        } } main() { TMOD=0X01;   TH0=(65535-10000)/256;   TL0=(65535-10000)%256;   EA=1;   ET0=1;   TR0=1;   do{}while(1); } 调试过,没问题。  详情 回复 发表于 2007-5-15 15:28
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己计算一下啊!不够就把一个计时器输入设为外部,这个外部输入可以在另一个计时器的中断里通过CPL指令产生,就可以了!
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是不是要非常准确的啊 1us也不能差??  如果不是 我觉得可以用一个定时器0  好像做时钟那样做就可以了把  2s后LED=!LED
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
这种问题自己看书去!!!

 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 
用定时器0实现 1个LED 灯 2秒钟 亮一次,然后熄灭,循环。 亮和灭 间隔都是2秒。  时钟 12MHZ。
  ORG 0000H
  LJMP MAIN
  ORG 000BH
  LJMP INTERR
  ORG 0060H
  MAIN:        MOV R0,#28H                        ;设置循环40次,中断在0.05S时产生,用R0循环40次 得到题目所要时间 2S  
        MOV TMOD,#01H                 
                MOV TH0,#3CH                ;设置产生0.05S的中断初值
                MOV TL0,#0B0H
                MOV P2,#0FEH                ;(实验LED为共阳极)先点亮P2.0的LED 2S
                SETB EA                                ;允许中断
                SETB ET0
                SETB TR0                        ;定时器起动寄存器开启,定时器开始工作
                SJMP $

;中断子程序实现在P2.0口输出周期为4S的方波用于点亮LED  
;子程序名为:INTERR
;程序清单:
  ORG 0100H
  INTERR: MOV TH0,#3CH
          MOV TL0,#0B0H                 ;赋初值
                  DJNZ R0,LP                 ;当循环40次 延时达到2S时,对P2.0取反
                  CPL P2.0
        LP:   RETI
          END

实验过了,没问题 !!!!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼上的能不能用C改写一下。汇编难懂啊
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
#include
#define uchar unsigned char

uchar counter=0;
sbit P1_0=P1^0;

/*定时器0方式1定时10ms,每次中断计数200次再让灯反相*/
time0() interrupt 1   
{  TH0=(65535-10000)/256;
   TL0=(65535-10000)%256;
   if(++counter==200)
       { P1_0=!P1_0;
         counter=0;
       }
}

main()
{ TMOD=0X01;
  TH0=(65535-10000)/256;
  TL0=(65535-10000)%256;
  EA=1;
  ET0=1;
  TR0=1;
  do{}while(1);
}

调试过,没问题。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表