导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:测高电平的宽度

* 12245: 初学者:测高电平的宽度

   luoyi 
luoyi发表的帖子 

 初学者:测高电平的宽度
;这段程序是用外部中断0和定时器t0,工作方式1测外部高电平的宽度。因为定时器t0,工
作方式1最大定时长度65536us
;所以程序中使用了软件计数的方法。每1ms定时器溢出一次,每溢出一次累加器加1。当外
部脉冲出现下跳沿时,产生外部中断
;取出累加器a中的数据放入30h地址中
                 org 0000h
                 ajmp main
                 org 0003h
                 ajmp serve
                 org 000bh
                 ajmp time
                 org 0030h
           main: mov tmod,#00001001b;t0工作方式1,gate位为1
                 mov tl0,#018h   
                 mov th0,#0fch;1ms的定时初值
                 setb it0;外部中断0的触发方式为下跳沿触发
                 clr tr0;关定时器0
             up: jnb p3.2,next;如果外部已是高电平,等待下一个高电平
                 ajmp up 
         next:   setb tr0;打开定时器0        
                 setb et0;t0中断允许
                 setb ea;中断总允许
                 clr px0;外部中断0低优先级
                 setb pt0;t0中断高优先级
                 mov 30h,#00h
                 mov a,#00h
                 jnb p3.2,$;等待上升沿
                 setb ex0;打开外部中断0
                 ajmp $
           time: mov tl0,#018h
                 mov th0,#0fch
                 inc a
                 reti
          serve: mov 30h,a
                 reti
                 end 
                 
;这个程序在time和serve两个标号上设断点,但是程序一运行直接跑到serve上停下,即先
进入外部中断0处理程序。所加的信号时用
;信号发生器产生的高电平的宽度是6ms,低电平宽度是2ms的方波。也就是说程序跑完后在
30h中应该是5或6才对。

发表时间:2002年10月12日19:33:00

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  12293.[详细]参考
摘要:将以下2句 up: jnb p3.2,next;如果外部已是高电平,等待下一个高电平          &nb......(186字)
- [红心J][951次] 2002年10月13日

  12492.[详细]也许...
摘要:将           up: jnb p3.2,next;如果外部已是高电平,等待下一个高电平 &......(464字)
- [gty][1144次] 2002年10月18日

  89425.[详细]clr ie0
摘要:改为:     jnb p3.2,$;等待上升沿           ......(141字)
- [zy440][874次] 2006年2月26日

[上一篇帖子]:我做过,我有
[下一篇帖子]:硬件:能否看看哪位红外接收程序wujb18@163.net我用的发送芯片是SC9028,想参考高手精