微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机红外编码

单片机红外编码

时间:10-02 整理:3721RD 点击:
k0         BIT P1.0      ;   各位老师大家好,这个是98C51的红外线发射有几个句子我不明白,请你们解释一下。
k1          BIT P1.1
k2         BIT P1.2
k3          BIT P1.3
k4         BIT P1.4
k5          BIT P1.5
k6         BIT P1.6
k7          BIT P1.7
bz        bit 00h           ;不明白
k0h        equ #0f1h
k0l         equ #0c8h       ;k0键输出频率300Hz833
k1h        equ #0f8h
k1l         equ #0ech       ;k1键输出频率600Hz417
k2h        equ #0feh
k2l         equ #0eah       ;k2键输出频率900Hz278
k3h        equ #0ffh
k3l         equ #030h       ;k3键输出频率1200Hz208
k4h        equ #0ffh
k4l         equ #059h       ;k4键输出频率1500Hz167
k5h        equ #0ffh
k5l         equ #075h       ;k5键输出频率1800Hz139
k6h        equ #0ffh
k6l         equ #089h       ;k6键输出频率2100Hz119
k7h        equ #0ffh
k7l         equ #098h              ;k7键输出频率2400Hz104
        ORG        0000H
        aJMP        START
             ORG        000BH   ;定时器T0入口
        aJMP         intt0
        ORG        001bH          ;定时器T1入口
        aJMP        intt1                
        org 0030h
intt0:        cpl p3.4
        mov a,r1
        mov th0,a
        mov a,r2
        mov tl0,r2
        reti
intt1:        clr tr0
        clr et0
        clr tr1
        clr et1
        setb bz        ;不明白
        setb p3.4
        reti
start:         MOV P1,#0FFH
        mov p3,#0ffh
        MOV TMOD,#11H   ;计数器T0、T1工作在方式1
        setb ea         ;开所有中断
xh:        jb k0,d01
        acall ys
        Jb k0,d01        ;k0
        jnb k0,$       ;不明白
        acall sett1
        mov r1,k0h       
        mov r2,k0l
        acall sett0
        jnb bz,$         ;不明白
d01:        jb k0,d02
        acall ys
        Jb k0,d02        ;k1
        jnb k0,$
        acall sett1
        mov r1,k1h       
        mov r2,k1l
        acall sett0
        jnb bz,$
D02:        jb k0,d03
        acall ys
        Jb k0,d03        ;k2
        jnb k0,$
        acall sett1
        mov r1,k2h       
        mov r2,k2l
        acall sett0
        jnb bz,$
D03:        jb k0,d04
        acall ys
        Jb k0,d04        ;k3
        jnb k0,$
        acall sett1
        mov r1,k3h       
        mov r2,k3l
        acall sett0
        jnb bz,$
D04:        jb k0,d05
        acall ys
        Jb k0,d05        ;k4
        jnb k0,$
        acall sett1
        mov r1,k4h       
        mov r2,k4l
        acall sett0
        jnb bz,$
D05:        jb k0,d06
        acall ys
        Jb k0,d06        ;k5
        jnb k0,$
        acall sett1
        mov r1,k5h       
        mov r2,k5l
        acall sett0
        jnb bz,$
D06:        jb k0,d07
        acall ys
        Jb k0,d07        ;k6
        jnb k0,$
        acall sett1
        mov r1,k6h       
        mov r2,k6l
        acall sett0
        jnb bz,$
D07:        jb k0,d08
        acall ys
        Jb k0,d08        ;k7
        jnb k0,$
        acall sett1
        mov r1,k7h       
        mov r2,k7l
        acall sett0   
        jnb bz,$
d08:        ajmp xh
ys:        mov r5,#80h
ys1:    djnz r5,ys1
        ret
sett1:  MOV TH1,#3ch           ;定时时间约为100ms
        MOV TL1,#0b0h
        setb tr1        ;启动T1计时
        setb et1        ;允许T1中断
        clr bz
        ret
sett0:        MOV TH0,r1
        MOV TL0,r2
        setb tr0
        setb et0
        ret
        end

谢谢有好东西大家一起分享!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top