📄 5.lst
字号:
页 1
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
; *************************************
; * 单键遥控码学习控制器 *
; * 2001.11.29 *
; *************************************
;
;
;**********************************************************************
;* *
;* P1.0 1 40 VCC *
;* P1.1 2 39 P0.0 *
;* P1.2 3 38 P0.1 *
;* P1.3 4 37 P0.2 *
;* P1.4 5 36 P0.3 *
;* P1.5 6 35 P0.4 *
;* STUDYLAMP P1.6 7 34 P0.5 *
;* LAMP P1.7 8 33 P0.6 *
;* RST 9 32 P0.7 *
;* RXD P3.0 10 MCS-51 31 EA VDD *
;* TXD P3.1 11 30 ALE *
;* STUDYKEY INT0 P3.2 12 29 PSEN *
;* INT1 P3.3 13 28 P2.7 *
;* REMOTEIN T0 P3.4 14 27 P2.6 *
;* REMOTEOUT T1 P3.5 15 26 P2.5 *
;* WR P3.6 16 25 P2.4 *
;* RD P3.7 17 24 P2.3 *
;* XTAL2 18 23 P2.2 *
;* XTAL1 19 22 P2.1 *
;* VSS 20 21 P2.0 *
;* *
;**********************************************************************
;
SPBASE EQU 70H ;堆栈基址
IEVAL EQU 00H ;关所有中断
MEMBASE EQU 08H ;工作寄存器基址
MEMS EQU 67H ;工作寄存器个数
;
BITNMB EQU 08H ;一个字节包含八个位
;
KEYFUNFLAG EQU 80H ; 键功能索引
KEYFUNNMB EQU 81H ;键功能号
KEYFUNRW EQU 82H ;遥控信号读写标志
READFLAG EQU 88H ;读标记
WITERFLAG EQU 99H ;写标记
;
TMPHADDR EQU 08H ;读入高电平存放首址
TMPLADDR EQU 90H ;读入低电平存放首址
READTIME EQU 00H ;读入数据指令时间
; LOWH EQU R4 ;起始位存放高地址
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 2
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
; LOWL EQU R5 ;起始位存放低地址
STUDYLAMP EQU P1.6 ;学习指示灯
LAMP EQU P1.7 ;未定义指示灯
STUDYKEY EQU P3.2 ;学习键
;
REMOTEIN EQU P3.4 ;遥控输入
REMOTEOUT EQU P3.5 ;遥控输出
DELAYCONUT EQU 30H ;延时值
DELAYCONUT0 EQU 0FFH ;延时值
T1COUNT EQU 0F3H ;T1计数初值
TMODVAL EQU 22H ;计数模式控制字
TCONVAL EQU 41H ;计数控制寄存器值
PCONVAL EQU 00H ;电源控制寄存器值
T2CONVAL EQU 00H ;T2控制寄存器值
SCONVAL EQU 0F8H ;串口控制寄存器值
IPVAL EQU 01H ;中断优先级控制值
;
;
;*************************************
;* *
;* 主程序和中断程序入口 *
;* *
;*************************************
ORG 0000H ;程序执行开始地址
0000 0164 AJMP START ;跳至START执行
ORG 0003H ;外中断0中断入口地址
0003 01D6 AJMP INTEX0 ;跳至INTEX0中断服务程序
ORG 000BH ;定时器T0中断入口地址
000B 32 RETI ;中断返回(不开中断)
ORG 0013H ;外中断1中断入口地址
0013 32 RETI ;中断返回(不开中断)
ORG 001BH ;定时器T1中断入口地址
001B 0173 AJMP INTT1 ;跳至INTT1中断服务程序
ORG 0023H ;串行口中断入口地址
0023 32 RETI ;中断返回(不开中断)
ORG 002BH ;定时器T2中断入口地址
002B 32 RETI ;中断返回(不开中断)
;
;*************************************
;* *
;* 初始化程序中的各变量 *
;* *
;*************************************
002C E4 CLEARMEMIO: CLR A ;A清0
002D 14 DEC A ;A为#FFH
002E F580 MOV P0,A ;P0口置1
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 3
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0030 F5B0 MOV P3,A ;P3口置1
0032 F590 MOV P1,A ;P1口置1
0034 E4 CLR A ;清A(为0)
0035 F5A0 MOV P2,A ;P2口为0
0037 C296 CLR STUDYLAMP ;关学习灯
0039 C297 CLR LAMP ;关操作灯
003B C2B5 CLR REMOTEOUT ;关遥控码输出
003D D2B4 SETB REMOTEIN ;遥控接收为输入状态
003F 7808 MOV R0,#MEMBASE ;清工作寄存器,从08H开始
0041 7967 MOV R1,#MEMS ;清内存个数(为103个)
0043 F6 CLEARMEM: MOV @R0,A ;清0开始
0044 08 INC R0 ;地址加1
0045 D9FC DJNZ R1,CLEARMEM ;未清完转CLEARMEM继续
; MOV R0,#KEYFUNRW
; MOV @R0,#READFLAG
0047 758170 MOV SP,#SPBASE ;设堆栈基址(70H)
004A 75A800 MOV IE,#IEVAL ;关所有中断
004D 75B801 MOV IP,#IPVAL ;置优先级
0050 758922 MOV TMOD,#TMODVAL ;置计数器模式(8位自动重装初值模式)
0053 758700 MOV PCON,#PCONVAL ;波特率不加倍
0056 7598F8 MOV SCON,#SCONVAL ;串口中断不开
0059 758DF3 MOV TH1,#T1COUNT ;T1定时器初值(定时值为13微秒)
005C 758BF3 MOV TL1,#T1COUNT ; T1定时器初值
005F D2A8 SETB EX0 ;允许外中断0中断
0061 D2AF SETB EA ;开总中断允许
0063 22 RET ;子程序结束
;
;*************************************
;* *
;* 主 程 序 *
;* *
;*************************************
0064 12002C START: LCALL CLEARMEMIO ;调用上电初始化子程序
; 主体程序
0067 120185 MAIN: LCALL KEYWORK ;调用读键子程序
006A 020067 LJMP MAIN ;跳回MAIN循环
006D 00 NOP ;PC值出错处理
006E 00 NOP ;空操作
006F 00 NOP ;
0070 020064 LJMP START ;重新初始化
;
;*************************************
;* *
;* T1中断服务程序 *
;* *
;*************************************
0073 B2B5 INTT1: CPL REMOTEOUT ;40kHZ方波输出(红外线调制波)
0075 32 RETI ;中断返回
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 4
01-29-03
01:31:31
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;
;*************************************
;* *
;* 载波合成 *
;* *
;*************************************
0076 7808 REMOTETX: MOV R0,#TMPHADDR ;取遥控码高电平存放首址
0078 7990 MOV R1,#TMPLADDR ;取遥控码低电平存放首址
007A D297 SETB LAMP ;开操作灯
007C EC MOV A,R4 ;起始位高8位放入A
007D FB MOV R3,A ;放入R3暂存
007E 6011 JZ LOWBACK ;高8位为0转LOWBACK处理低8位
0080 E4 CLR A ;高8位非0处理
0081 14 DEC A ;A为#FFH
0082 FA LOWBACKTMP: MOV R2,A ;起始位复原,R2赋初值
0083 D28E LOWBACKTMP0: SETB TR1 ;开启T1
0085 D2AB SETB ET1 ;允许T1中断
0087 00 NOP ;用空操作延时
0088 00 NOP
0089 00 NOP
008A 00 NOP
008B 00 NOP
008C 00 NOP
008D DAF4 DJNZ R2,LOWBACKTMP0 ;计数值每减1循环时间为约21微秒
008F DBF1 DJNZ R3,LOWBACKTMP ;高8位计数值不为0转LOWBACKTMP
0091 ED LOWBACK: MOV A,R5 ;起始位低8位处理
0092 FA MOV R2,A ; 起始位低8位数放入R2暂存
0093 D28E LOWBACKTMP1: SETB TR1 ; 开启T1
0095 D2AB SETB ET1 ; 允许T1中断
0097 00 NOP ;用空操作延时
0098 00 NOP
0099 00 NOP
009A 00 NOP
009B 00 NOP
009C 00 NOP
009D DAF4 DJNZ R2,LOWBACKTMP1 ;低8位计数值不为0转LOWBACKTMP1
009F E6 TMP0: MOV A,@R0 ;高电平处理开始,取高电平数据
00A0 FA MOV R2,A ;放入R2
00A1 C28E TMP1: CLR TR1 ;关闭T1
00A3 C2AB CLR ET1 ;关闭T1中断允许(关40KHZ红外线)
00A5 C2B5 CLR REMOTEOUT ;关遥控输出
00A7 00 NOP ;空操作延时
00A8 00 NOP
00A9 00 NOP
00AA 00 NOP
00AB 00 NOP
00AC 00 NOP
00AD 00 NOP
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例5\5.ASM
页 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -