📄 5.lst
字号:
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
00AE 00 NOP
00AF 00 NOP
00B0 00 NOP
00B1 00 NOP
00B2 00 NOP
00B3 00 NOP
00B4 00 NOP
00B5 00 NOP
00B6 DAE9 DJNZ R2,TMP1 ;R2每减1循环时间约为21微秒
00B8 08 INC R0 ;指向下一高电平数据地址
00B9 E7 TMPP: MOV A,@R1 ;取低电平数据
00BA FA MOV R2,A ;放入R2
00BB D28E TMP2: SETB TR1 ;低电平处理,开定时器T1
00BD D2AB SETB ET1 ;开T1中断
00BF 00 NOP ;空操作延时
00C0 00 NOP
00C1 00 NOP
00C2 00 NOP
00C3 00 NOP
00C4 00 NOP
00C5 DAF4 DJNZ R2,TMP2 ;减1不为0转TMP2循环(周期为21微秒)
00C7 09 INC R1 ;指向下一低电平数据
00C8 E7 MOV A,@R1 ;取数据
00C9 6002 JZ OUT ;为0转OUT退出
00CB 019F AJMP TMP0 ;不为0转TMP0执行
00CD C28E OUT: CLR TR1 ;退出程序,关T1
00CF C2AB CLR ET1 ;关T1中断
00D1 C297 CLR LAMP ;关操作灯
00D3 C2B5 CLR REMOTEOUT ;关遥控输出
00D5 22 RET ;返回
;
;*************************************
;* 遥控数据读取 INT0中断程序 *
;* 高电平存TMPHADDR为首址RAM *
;* 低电平存TMPLADDR为首址RAM *
;*************************************
00D6 C2AB INTEX0: CLR ET1 ;关T1中断允许
00D8 C28E CLR TR1 ;关定时器T1
00DA C2A8 CLR EX0 ;关外中断0
00DC C2AF CLR EA ;关中断总允许
00DE D296 SETB STUDYLAMP ;开学习状态指示灯
00E0 C297 CLR LAMP ;关操作灯
00E2 7808 MOV R0,#TMPHADDR ;高电平存放首址放入R0(07H)
00E4 7990 MOV R1,#TMPLADDR ; 低电平存放首址放入R1(90H)
00E6 E4 CLR A ;A清0
00E7 F583 MOV DPH,A ;DPTR寄存器清0
00E9 F582 MOV DPL,A ;
00EB 30B412 READHEAD: JNB REMOTEIN,READDATA ;寻找起始位。当输入为0时转READDATA
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 6
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
00EE A3 INC DPTR ;输入为高电平时对DPTR循环计数
00EF 00 NOP ;空操作延时
00F0 00 NOP ;(循环周期约为21微秒)
00F1 00 NOP
00F2 00 NOP
00F3 00 NOP
00F4 00 NOP
00F5 00 NOP
00F6 00 NOP
00F7 00 NOP
00F8 00 NOP
00F9 00 NOP
00FA 00 NOP
00FB 00 NOP
00FC 00 NOP
00FD 00 NOP
00FE 01EB AJMP READHEAD ;跳回循环
;判断是不是遥控码起始位
0100 B58306 READDATA: CJNE A,DPH,READDATA00 ;DPTR高8位不为0,是起始位
0103 F583 MOV DPH,A ; DPTR高8位为0,不是起始位
0105 F582 MOV DPL,A ; DPTR清0
0107 01EB AJMP READHEAD ;重新寻找起始位
;
0109 E4 READDATA00: CLR A ;处理起始位开始。清A
010A F583 MOV DPH,A ;DPTR计数器清0
010C F582 MOV DPL,A ;
010E 20B412 READLOOP01: JB REMOTEIN,READDATA02 ;读起始位,高电平时转READDATA02
0111 A3 INC DPTR ;低电平时对DPTR循环计数
0112 00 NOP ;空操作延时
0113 00 NOP
0114 00 NOP
0115 00 NOP
0116 00 NOP
0117 00 NOP
0118 00 NOP
0119 00 NOP
011A 00 NOP
011B 00 NOP
011C 00 NOP
011D 00 NOP
011E 00 NOP
011F 00 NOP
0120 00 NOP
0121 210E AJMP READLOOP01 ; 循环,周期约为21微秒
;
0123 C297 READDATA02: CLR LAMP ;关操作灯
0125 AC83 MOV R4,DPH ;存起始位(高8位入R4)
0127 AD82 MOV R5,DPL ;存起始位(低8位入R5)
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 7
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0129 758300 MOV DPH,#00H ;清0
012C 758200 MOV DPL,#READTIME ;放入校正值(本设计没校正,值为0)
012F 215C AJMP READLOOP1 ;转READLOOP1处理高电平程序
;
0131 D297 READDATA1: SETB LAMP ;存高电平数据程序。开操作灯
0133 A682 MOV @R0,DPL ;存入高电平数据(地址在08H-6FH)
0135 08 INC R0 ;指向下一地址
0136 758200 MOV DPL,#READTIME ; 放入校正值(本设计没校正,值为0)
0139 758300 MOV DPH,#00H ;清0
013C 20B412 READLOOP0: JB REMOTEIN,READDATA2 ;读低电平程序。高电平时转READDATA2
013F A3 INC DPTR ;低电平时对DPTR循环计数
0140 00 NOP ;空操作延时,循环延时周期为21微秒
0141 00 NOP
0142 00 NOP
0143 00 NOP
0144 00 NOP
0145 00 NOP
0146 00 NOP
0147 00 NOP
0148 00 NOP
0149 00 NOP
014A 00 NOP
014B 00 NOP
014C 00 NOP
014D 00 NOP
014E 00 NOP
014F 213C AJMP READLOOP0 ;延时循环控制
;
0151 C297 READDATA2: CLR LAMP ;存低电平数据程序。关操作灯
0153 A782 MOV @R1,DPL ;存低电平数据(地址在90H-F7H)
0155 09 INC R1 ;地址加1
0156 758200 MOV DPL,#READTIME ; 计数校正(本设计没校正,值为0)
0159 758300 MOV DPH,#00H ;清0
015C 30B412 READLOOP1: JNB REMOTEIN,READDATA3 ;读高电平程序。为0时转READDATA3
015F A3 INC DPTR ;高电平时对DPTR循环计数
0160 00 NOP ;空操作延时,循环周期为21微秒
0161 00 NOP
0162 00 NOP
0163 00 NOP
0164 00 NOP
0165 00 NOP
0166 00 NOP
0167 00 NOP
0168 00 NOP
0169 00 NOP
016A 00 NOP
016B 00 NOP
016C 00 NOP
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 8
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
016D 00 NOP
016E 00 NOP
016F 215C AJMP READLOOP1 ;循环控制
;
0171 E4 READDATA3: CLR A ;
0172 B58302 CJNE A,DPH,READDATA4 ;DPH不为0转READDATA4(码读完)
0175 2131 AJMP READDATA1 ;转READDATA1(存高电平数据)
0177 F6 READDATA4: MOV @R0,A ;放结束标志数据
0178 F7 MOV @R1,A ;放结束标志数据
; SETB LAMP ;开操作灯
0179 C296 CLR STUDYLAMP ;关学习灯
017B D2B4 SETB REMOTEIN ;遥控输入状态
017D 30B2FD READEND: JNB STUDYKEY,READEND ;等待键释放
0180 D2A8 SETB EX0 ;开外中断
0182 D2AF SETB EA ;开总中断允许
0184 32 RETI ;中断返回
;
;*************************************
;* *
;* 键工作子程序 *
;* *
;*************************************
0185 D290 KEYWORK: SETB P1.0 ;置P1.0口为输入状态
0187 309001 JNB P1.0,KEY0 ;为0转KEY0
018A 22 KEYOUT: RET ;无键按下,返回
;
018B 120199 KEY0: LCALL DL10MS ;延时去抖动
018E 2090F9 JB P1.0,KEYOUT ;是干扰转KEYOUT返回
0191 020076 LJMP REMOTETX ;有键按下,转REMOTETX发谢遥控码
;
;*************************************
;* *
;* 延时程序( 255 X 2 = 513 us) *
;* *
;*************************************
0194 78FF DELAY: MOV R0,#DELAYCONUT0 ;(#0FFH)
0196 D8FE DELAY1: DJNZ R0,DELAY1
0198 22 RET
;
;
;
;*************************************
;* *
;* 延时约25 ms *
;* *
;*************************************
0199 7930 DL10MS: MOV R1,#DELAYCONUT ;(#30H)
019B 120194 DL10MS1: LCALL DELAY
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 9
01-29-03
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -