?? 9t.lst
字號:
頁 1
01-29-03
01:47:35
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
; *************************************
; * *
; * 遙控編碼控制器 *
; * *
; * 采用89C2051 *
; *************************************
;
; P1.0口按紐為前進,P1.1口按紐為后退,P1.2口按紐為左轉(zhuǎn)彎,P1.3口按紐為右轉(zhuǎn)彎,
; P1.4口按紐為自動駕駛,P3.5為編碼輸出
;
;*************************************
;* *
;* 主程序和中斷程序入口 *
;* *
;*************************************
ORG 0000H ;程序執(zhí)行開始地址
0000 020036 LJMP START ;跳至START執(zhí)行
ORG 0003H ;外中斷0中斷入口地址
0003 32 RETI ;中斷返回(不開中斷)
ORG 000BH ;定時器T0中斷入口地址
000B 32 RETI ;中斷返回(不開中斷)
ORG 0013H ;外中斷1中斷入口地址
0013 32 RETI ;中斷返回(不開中斷)
ORG 001BH ;定時器T1中斷入口地址
001B 32 RETI ;中斷返回(不開中斷)
ORG 0023H ;串行口中斷入口地址
0023 32 RETI ;中斷返回(不開中斷)
ORG 002BH ;定時器T2中斷入口地址
002B 32 RETI ;中斷返回(不開中斷)
;
;*************************************
;* *
;* 初始化程序中的各變量 *
;* *
;*************************************
002C E4 CLEARMEMIO: CLR A ;清A
002D 14 DEC A ;A為#0FFH
002E F590 MOV P1,A ; P1口置1
0030 F5B0 MOV P3,A ; P3口置1
0032 75A800 MOV IE,#00H ;關(guān)所有中斷
0035 22 RET ;子程序返回
;
;
;
;*************************************
;* *
;* 主 程 序 *
;* *
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例9\9T.ASM
頁 2
01-29-03
01:47:35
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
;*************************************
0036 12002C START: LCALL CLEARMEMIO ;調(diào)用初始化
; 主體程序
0039 120045 MAIN: LCALL KEYWORK ;調(diào)用查鍵子程序
003C 020039 LJMP MAIN ;轉(zhuǎn)MAIN循環(huán)
003F 00 NOP ;PC值出錯處理
0040 00 NOP
0041 00 NOP
0042 020036 LJMP START ;轉(zhuǎn)START重新啟動
;
;**************************
;* *
;* 鍵盤工作子程序 *
;**************************
0045 7590FF KEYWORK: MOV P1,#0FFH ;置輸入狀態(tài)
0048 309007 JNB P1.0,KEY0 ; 讀P1.0口,為0轉(zhuǎn)KEY0
004B 30910D JNB P1.1,KEY1 ; 讀P1.1口,為0轉(zhuǎn)KEY1
004E 309425 JNB P1.4,KEY4 ; 讀P1.4口,為0轉(zhuǎn)KEY4
0051 22 KEYOUT: RET ;沒鍵按下,退出
;
0052 12011B KEY0: LCALL DL10MS ;延時10毫秒消抖
0055 2090F9 JB P1.0,KEYOUT ;干擾,退出
0058 020089 LJMP KEYFUN00 ;轉(zhuǎn)KEYFUN00
005B 12011B KEY1: LCALL DL10MS ;
005E 2091F0 JB P1.1,KEYOUT ; 干擾,退出
0061 020098 LJMP KEYFUN01 ; 轉(zhuǎn)KEYFUN01
0064 12011B KEY2: LCALL DL10MS ; 延時10毫秒消抖
0067 2092E7 JB P1.2,KEYOUT ; 干擾,退出
006A 0200A7 LJMP KEYFUN02 ; 轉(zhuǎn)KEYFUN02
006D 12011B KEY3: LCALL DL10MS ; 延時10毫秒消抖
0070 2093DE JB P1.3,KEYOUT ; 干擾,退出
0073 0200B9 LJMP KEYFUN03 ; 轉(zhuǎn)KEYFUN03
0076 12011B KEY4: LCALL DL10MS ; 延時10毫秒消抖
0079 2094D5 JB P1.4,KEYOUT ; 干擾,退出
007C 0200CE LJMP KEYFUN04 ; 轉(zhuǎn)KEYFUN04
007F 3092E2 KEYWORK1: JNB P1.2,KEY2 ;P1.2口為0轉(zhuǎn)KEY2
0082 3093E8 JNB P1.3,KEY3 ; P1.3口為0轉(zhuǎn)KEY3
0085 1200DD LCALL KEYFUN05 ;調(diào)轉(zhuǎn)彎復位子程序
0088 22 RET ;返回
;
0089 7402 KEYFUN00: MOV A,#02H ;發(fā)2個脈沖賦值
008B 1200E9 LCALL REMOTE ;發(fā)射2個脈沖(前進)
008E 12007F WAIT0: LCALL KEYWORK1 ;調(diào)一次轉(zhuǎn)彎查鍵子程序
0091 3090FA JNB P1.0,WAIT0 ;等待按鍵釋放
0094 1200E3 LCALL KEYFUN06 ;釋放時發(fā)8個脈沖(停止)
0097 22 RET ;返回
;
0098 7403 KEYFUN01: MOV A,#03H ;發(fā)3個脈沖賦值
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例9\9T.ASM
頁 3
01-29-03
01:47:35
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
009A 1200E9 LCALL REMOTE ;發(fā)射3個脈沖(前進)
009D 12007F WAIT1: LCALL KEYWORK1 ;調(diào)一次轉(zhuǎn)彎查鍵子程序
00A0 3091FA JNB P1.1,WAIT1 ;等待按鍵釋放
00A3 1200E3 LCALL KEYFUN06 ;釋放時發(fā)8個脈沖(停止)
00A6 22 RET ;
;
00A7 7404 KEYFUN02: MOV A,#04H ;發(fā)4個脈沖賦值
00A9 1200E9 LCALL REMOTE ;發(fā)射4個脈沖(左轉(zhuǎn))
00AC 30921C JNB P1.2,KEYOUT1 ;鍵按下不放,轉(zhuǎn)KEYOUT1返回
00AF 12011B LCALL DL10MS ;左轉(zhuǎn)鍵放開,延時10毫秒
00B2 309216 JNB P1.2,KEYOUT1 ;為0(干擾),轉(zhuǎn)KEYOUT1返回
00B5 1200DD LCALL KEYFUN05 ;左轉(zhuǎn)鍵放開發(fā)7個脈沖(轉(zhuǎn)彎復位)
00B8 22 RET ;返回
;
00B9 7405 KEYFUN03: MOV A,#05H ;發(fā)5個脈沖賦值
00BB 1200E9 LCALL REMOTE ;發(fā)射5個脈沖(右轉(zhuǎn))
00BE 30930A JNB P1.3,KEYOUT1 ;鍵按下不放,轉(zhuǎn)KEYOUT1返回
00C1 12011B LCALL DL10MS ;右轉(zhuǎn)鍵放開,延時10毫秒
00C4 309304 JNB P1.3,KEYOUT1 ;為0(干擾),轉(zhuǎn)KEYOUT1返回
00C7 1200DD LCALL KEYFUN05 ;右轉(zhuǎn)鍵放開發(fā)7個脈沖(轉(zhuǎn)彎復位)
00CA 22 RET ;返回
00CB 020051 KEYOUT1: LJMP KEYOUT ;跳至KEYOUT返回
;
00CE 3094FD KEYFUN04: JNB P1.4,KEYFUN04 ;等待按鍵釋放
00D1 12011B LCALL DL10MS ;延時消抖動
00D4 3094F7 JNB P1.4,KEYFUN04 ;P1.4為0,系干擾,轉(zhuǎn)KEYFUN04再等待
00D7 7406 MOV A,#06H ;按鍵釋放,發(fā)6個脈沖(進入自動駕駛)
00D9 1200E9 LCALL REMOTE ;發(fā)射一次
00DC 22 RET ;返回
;
00DD 7407 KEYFUN05: MOV A,#07H ;發(fā)7個脈沖程序(轉(zhuǎn)彎復位)
00DF 1200E9 LCALL REMOTE ;發(fā)射一次
00E2 22 RET ;返回
00E3 7408 KEYFUN06: MOV A,#08H ;發(fā)8個脈沖程序(停車)
00E5 1200E9 LCALL REMOTE ;發(fā)射一次
00E8 22 RET ;返回
;
;
;*************************************
;* *
;* 編碼發(fā)送程序 *
;* *
;*************************************
;按A中數(shù)值發(fā)射脈沖
00E9 F9 REMOTE: MOV R1,A ;發(fā)射脈數(shù)入A
00EA 020111 LJMP OUT3 ;第一個脈沖處理
00ED 7855 OUT: MOV R0,#55H ;1MS脈寬定時值
00EF C2B5 OUT1: CLR P3.5 ;發(fā)低電平脈寬
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例9\9T.ASM
頁 4
01-29-03
01:47:35
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
00F1 00 NOP ;延時循環(huán)(周期約為21微秒)
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 D8F3 DJNZ R0,OUT1 ;定時時間未到,轉(zhuǎn)OUT1循環(huán)
00FC 7855 MOV R0,#55H ;1MS脈寬定時值
00FE D2B5 OUT2: SETB P3.5 ;發(fā)高電平脈寬
0100 00 NOP ;延時循環(huán)(周期約為21微秒)
0101 00 NOP
0102 00 NOP
0103 00 NOP
0104 00 NOP
0105 00 NOP
0106 00 NOP
0107 00 NOP
0108 00 NOP
0109 D8F3 DJNZ R0,OUT2 ;定時時間未到,轉(zhuǎn)OUT2循環(huán)
010B D9E0 DJNZ R1,OUT ;脈沖數(shù)未發(fā)完轉(zhuǎn)OUT再循環(huán)
010D 12011B LCALL DL10MS ;脈沖發(fā)完延時10毫秒
0110 22 RET ;返回
0111 78FF OUT3: MOV R0,#0FFH ;3MS脈寬定時值
0113 0200EF LJMP OUT1 ;轉(zhuǎn)OUT1紅外線發(fā)射
;
;
;
;*************************************
;* *
;* 延時 255 X 2 = 512 us *
;* *
;*************************************
0116 7AFF DELAY: MOV R2,#0FFH
0118 DAFE DELAY1: DJNZ R2,DELAY1
011A 22 RET
;
;*************************************
;* *
;* 延時10ms程序 *
;* (消按鍵抖動用) *
;*************************************
011B 7B14 DL10MS: MOV R3,#14H
011D 120116 DL10MS1: LCALL DELAY
0120 DBFB DJNZ R3,DL10MS1
0122 22 RET
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例9\9T.ASM
頁 5
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -