📄 家庭无线报警系统.lst
字号:
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 1
MACRO ASSEMBLER A51 V7.00a
OBJECT MODULE PLACED IN 家庭无线报警系统.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 家庭无线报警系统.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;采用AT89S51单片机,晶振11.0592MHZ,通讯速率9600,采用TTL串口通讯
2 ;LED缓存第1行是40H-4FH,上面行
3 ;LED缓存第2行是30H-3FH,下面行
4 ;手机号码缓存在50H-5BH的12个内存中
5 ;密码"车辆报警"存放在5CH-73H的24个内存中6个中文字
6 ;手机号码存放在74H-7FH的12个内存中
7 ;设防标志存放在位地址7FH中
0000 8 ORG 0000H
0000 0128 9 AJMP MAIN;转入主程序
0003 10 ORG 0003H ;外部中断P3.2脚INT0入口地址
0003 00 11 NOP
0004 00 12 NOP
0005 00 13 NOP
0006 00 14 NOP
0007 00 15 NOP
0008 00 16 NOP
0009 32 17 RETI
000B 18 ORG 000BH;中断陷阱
000B 00 19 NOP
000C 00 20 NOP
000D 00 21 NOP
000E 00 22 NOP
000F 00 23 NOP
0010 00 24 NOP
0011 32 25 RETI
0013 26 ORG 0013H;中断陷阱
0013 00 27 NOP
0014 00 28 NOP
0015 00 29 NOP
0016 00 30 NOP
0017 00 31 NOP
0018 00 32 NOP
0019 32 33 RETI
001B 34 ORG 001BH;中断陷阱
001B 00 35 NOP
001C 00 36 NOP
001D 00 37 NOP
001E 00 38 NOP
001F 00 39 NOP
0020 00 40 NOP
0021 32 41 RETI
0023 42 ORG 0023H
0023 00 43 NOP
0024 00 44 NOP
0025 00 45 NOP
0026 00 46 NOP
0027 32 47 RETI
00A0 48 LCD_RS BIT P2.0;RS
00A1 49 LCD_RW BIT P2.1;RW
00A2 50 LCD_EN BIT P2.2;E
0090 51 FOK EQU P1.0;定义为啦叭
0091 52 SX EQU P1.1;定义手机模块上线标志
0092 53 SJKJ EQU P1.2;定义手机模块激活控制端
54 ; SJGJ EQU P2.3;定义手机模块关机控制端
55 ; EQU P2.4;定义
0097 56 LED EQU P1.7;定义
57 ; EQU P2.6;定义
0096 58 DY EQU P1.6;定义电源断线控制端
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 2
59
00B2 60 VT EQU P3.2;定义解码有效标志
00B4 61 DM EQU P3.4;定义大门控制端
00B5 62 HW EQU P3.5;定义红外报警端
00B6 63 YKSF EQU P3.6;定义遥控设防端
00B7 64 YKJSF EQU P3.7;定义遥控解设防端
00B3 65 DD EQU P3.3;定义低电压报告
66
0028 67 MAIN:
0028 11A5 68 CALL SET_LCD;LCD 初始化设置
002A C292 69 CLR SJKJ
70 ;以下为主程序进行CPU中断方式设置
002C D288 71 SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发,报警触发控制端
002E 759850 72 MOV SCON,#50H;设置成串口1方式
0031 758920 73 MOV TMOD,#20H;波特率发生器T1工作在模式2上
0034 758DFD 74 MOV TH1,#0FDH;预置初值(按照波特率9600BPS预置初值)
0037 758BFD 75 MOV TL1,#0FDH;预置初值(按照波特率9600BPS预置初值)
003A D28E 76 SETB TR1;启动定时器T1
003C 758700 77 MOV PCON,#00H
003F 1208B0 78 LCALL YUSJ;开机清除接收短消息手机号码
0042 D292 79 SETB SJKJ;打开手机
0044 9001F4 80 MOV DPTR,#500;延时500ms
0047 120A56 81 LCALL DELAYXMS;开机延时
004A C292 82 CLR SJKJ;复位手机控制
004C 12051B 83 LCALL ATE0OK;开机发送ATE0指令!
004F 120459 84 LCALL CNMI ;发送(AT+CNMI=1,1,0,0,1),短信到达TE 新信息指示
0052 12095B 85 LCALL SCQBDX;调用删除SIM卡中所有短信的子程序
86 ;完成和手机通信握手,和SIM卡删除所有短消息初始化
0055 87 START:
0055 120537 88 LCALL XRSJ;读出授权电话号码及密码,写入内存中
0058 120A4B 89 LCALL MJCS;串口接收模块数据OK响一声
005B 120A4B 90 LCALL MJCS;串口接收模块数据OK响一声
005E C291 91 CLR SX;模块上线
92 ;**********************************************
0060 93 KKS:
0060 209822 94 JB RI,UART;检测到RI变1就退出
0063 20B208 95 JB VT,PDYKSH;解码有效标志=0则转PDYKSH判断遥控信号
0066 20981C 96 JB RI,UART;检测到RI变1就退出
0069 30961C 97 JNB DY,DYBJ;电源断线控制端=0则转DYBJ电源报警
006C 0160 98 AJMP KKS
99 ;**********************************************
006E 100 PDYKSH:
006E 90000A 101 MOV DPTR,#10;延时10mS
0071 120A56 102 LCALL DelayXmS;开机延时
0074 20B2F7 103 JB VT,PDYKSH;延时防止误码报
0077 20B413 104 JB DM,DMBJ;大门报警端=0则转DMBJ大门报警
007A 20B518 105 JB HW,HWBJ;红外报警端=0则转HWBJ红外报警
007D 20B61D 106 JB YKSF,YKSFSZ;遥控设防端=0则转遥控设防设置
0080 20B71E 107 JB YKJSF,YKJSFSZ;遥控解设防端=0则转遥控解设防设置
0083 0160 108 AJMP KKS
109 ;**********************************************
0085 110 UART:
0085 020134 111 LJMP UARTI
0088 112 DYBJ:;电源报警
0088 120826 113 LCALL FDYBJ
008B 0160 114 AJMP KKS
008D 115 DMBJ:;大门报警
008D 2097D0 116 JB LED,KKS;如果设防标志SFBZ=0则退出
0090 1207C8 117 LCALL FDMBJ
0093 0160 118 AJMP KKS
0095 119 HWBJ:;红外报警
0095 2097C8 120 JB LED,KKS;如果设防标志SFBZ=0则退出
0098 1207F7 121 LCALL FHWBJ
009B 0160 122 AJMP KKS
009D 123 YKSFSZ:;设防
009D C297 124 CLR LED
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 3
009F 0160 125 AJMP KKS
00A1 126 YKJSFSZ:;解设防
00A1 D297 127 SETB LED
00A3 0160 128 AJMP KKS
129 ;-----------------------------------------------------
130 ;LCD 初始化设置
131 ;-----------------------------------------------------
00A5 132 SET_LCD:
00A5 C2A2 133 CLR LCD_EN
00A7 11DC 134 CALL INIT_LCD ;初始化 LCD
00A9 900003 135 MOV DPTR,#3
00AC 120A56 136 LCALL DelayXmS
00AF 900BC4 137 MOV DPTR,#TAB8 ;指针指到显示信息1
00B2 7840 138 MOV R0,#40H
00B4 7900 139 MOV R1,#0
00B6 11D2 140 CALL ZSJ;转数据到显示缓冲区
00B8 7401 141 MOV A,#1 ;显示在第一行
00BA 7840 142 MOV R0,#40H
00BC 7900 143 MOV R1,#0
00BE 11F5 144 CALL LCD_SHOW
00C0 900BD4 145 MOV DPTR,#TAB9 ;指针指到显示信息2
00C3 7830 146 MOV R0,#30H
00C5 7900 147 MOV R1,#0
00C7 11D2 148 CALL ZSJ;转数据到显示缓冲区
00C9 7402 149 MOV A,#2 ;显示在第二行
00CB 7830 150 MOV R0,#30H
00CD 7900 151 MOV R1,#0
00CF 11F5 152 CALL LCD_SHOW
00D1 22 153 RET
154 ;-----------------------------------------------------
155 ;转数据到显示缓冲区
156 ;-----------------------------------------------------
00D2 157 ZSJ:
00D2 E4 158 CLR A
00D3 93 159 MOVC A,@A+DPTR ;由消息区取出字符
00D4 F6 160 MOV @R0,A
00D5 08 161 INC R0
00D6 A3 162 INC DPTR
00D7 09 163 INC R1
00D8 B910F7 164 CJNE R1,#10H,ZSJ
00DB 22 165 RET
166 ;-----------------------------------------------------
167 ;LCD 接口初始化
168 ;8 位I/O 控制
169 ;-----------------------------------------------------
00DC 170 INIT_LCD:
00DC 7438 171 MOV A,#38H ;双列显示,字形5*7 点阵
00DE 312A 172 CALL WCOM;写入命令
00E0 900003 173 MOV DPTR,#3
00E3 120A56 174 LCALL DelayXmS
00E6 740C 175 MOV A,#0CH ;开显示,关光标,
00E8 312A 176 CALL WCOM;写入命令
00EA 900003 177 MOV DPTR,#3
00ED 120A56 178 LCALL DelayXmS
00F0 7401 179 MOV A,#01H ;清除 LCD 显示屏
00F2 312A 180 CALL WCOM;写入命令
00F4 22 181 RET
182 ;----------------------------------------------------
183 ;在LCD 的第一行或第二行显示信息字符
184 ;----------------------------------------------------
00F5 185 LCD_SHOW:
00F5 B40106 186 CJNE A,#1,LINE2 ;判断是否为第一行
00F8 7480 187 LINE1: MOV A,#80H ;设置 LCD 的第一行地址
00FA 312A 188 CALL WCOM ;写入命令
00FC 8004 189 JMP FILL
00FE 74C0 190 LINE2: MOV A,#0C0H ;设置 LCD 的第二行地址
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 4
0100 312A 191 CALL WCOM ;写入命令
0102 192 FILL:
0102 E4 193 CLR A ;填入字符
0103 E6 194 MOV A,@R0 ;由消息区取出字符
0104 09 195 INC R1
0105 B91101 196 CJNE R1,#11H,LC1;判断是否为结束码
0108 22 197 RET
0109 312F 198 LC1: CALL WDATA ;写入数据
010B 08 199 INC R0
010C 80F4 200 JMP FILL ;继续填入字符
010E 22 201 RET
202 ;-----------------------------------------------------*/
203 ; 写指令、数据使能子程序
204 ;-----------------------------------------------------
010F 205 ENABLE: ;写指令使能
010F C2A0 206 CLR LCD_RS ;RS=L,LCD_RW=L,D0-D7=指令码,E=高脉冲
0111 C2A1 207 CLR LCD_RW
0113 D2A2 208 SETB LCD_EN
0115 3125 209 CALL DELAY0
0117 C2A2 210 CLR LCD_EN
0119 22 211 RET
011A 212 ENABLE1: ;写数据使能
011A D2A0 213 SETB LCD_RS ;RS=H,RW=L,D0-D7=数据,E=高脉冲
011C C2A1 214 CLR LCD_RW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -