导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→大虾帮帮我,近来看看[guest]

 *第30180篇: 大虾帮帮我,近来看看

  
楼 主:guest 2005年3月11日22:01
 大虾帮帮我,近来看看
最近我想写个程序来发射红外线,就是用两个定时器,一个定时器a产生脉宽调制用来作为载波信号,另一个定时器b控制a以达到产生不同时间的高低电平的目的,但是我不知道怎么样才能输出一个32位长的编码(是由1和0组成),其中的1和0都是由一定时间的高电平和一定时间的低电平组成的,请问大虾,该怎么设置定时器b呢?或者您有什么更好的想法吗?
  
2楼:Kuang-chingTsui 2005年3月12日08:49
 如果你的机器。。。。。。。。。。
如果你的机器在发送红外码时不做其它事的话,可以不用定时器。用软件方式就可以,编两个子程序,一是发送“1”,一是发送“0”。注意,发送时只在红外发射管导通时(发“光”)才需要载波。这个载波也可以在程序中实现。
  
3楼:guest 2005年3月12日10:49
 谢谢Kuang-chingTsui
很感谢你的回答,可是我仍然有点不明白,我的机器在发送红外码时是不再做其他事情的,但是如果是调用这两个子程序,那岂不是要反复地调用,发送32位不是要调用32次?
(因为发送的1或0是没有规律的)我发送一个红外码可以这样调用,可是如果在不同的时间我要发送不同的红外码,那这种方式?????因为需要它发“光”,所以还要用到载波。
  
4楼:Kuang-chingTsui 2005年3月13日17:10
 参考
这是几年前写的一段程序,实际运行正确。BIT脉宽0.833mS,用51 Mcu ,晶振可能是11.0592MHz,用P1.6驱动红外LED。
你不能照搬搬,仅供参考。
;one bit pulse width with 38khz carrier wave
;发送一个“0”子程序
bitzer: mov r3,#32
osc0:   cpl p1.6
        mov r2,#3
        nop
        nop
        nop
        nop
        djnz r2,$
        cpl p1.6
        mov r2,#3
        nop
        nop
        nop
        djnz r2,$
        djnz r3, osc0
        ret
;发一个“1”子程序,实际上是一个延时,使P1.6高电平0.833mS
bitone: setb p1.6                               
        mov r3,#62
osc1:   mov r2,#5
        djnz r2,$
        djnz r3,osc1
        ret


;trans ir remote code subprogram(for tv/vga card)
发一个四字节编码子程序,该编码首地址已在DPTR中。
transr: mov r0,#3
        acall bitzer
        acall bitone
        mov a,#0
tbyte:  mov 25h,a
        movc a,@a+dptr
        mov r1,#8
tt0:     jb acc.7,tt1
        acall bitzer
        jmp tt2
tt1:     acall bitone
tt2:     rl a
        djnz r1,tt0
        mov a,25h
        inc a
        djnz r0,tbyte
        ret

  
5楼:guest 2005年3月16日20:42
 好棒!
谢谢,我只是参考一下,我用的是凌阳的,不是51。我根据你原来的提示,我自己编了一个程序,可是却无法正常调用那个“1”和“0”子程序,说是有两个运行平台,看到你的程序的时候,发现是那么简单,佩服!谢谢你给的参考。

>>>>>>对该主题发表你的看法

本主题贴数5,分页: [第1页]


[上一篇主题]:请各位老大推荐一款单片机吧

[下一篇主题]:大虾帮帮我,近来看看