?? ir-dsy.lst
字號:
A51 MACRO ASSEMBLER IR_DSY 03/29/2005 16:10:00 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN IR-DSY.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE IR-DSY.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2 ;* 標題: 偉納電子ME300B單片機開發系統演示程序 - 遙控鍵值解碼-數碼管顯示 *
3 ;* 文件: IR-DSY.asm *
4 ;* 日期: 2005-3-20 *
5 ;* 版本: 1.0 *
6 ;* 作者: gguoqing *
7 ;* 郵箱: gguoqing@willar.com *
8 ;* 網站: http://www.willar.com *
9 ;********************************************************************************
10 ;* 描述: *
11 ;* ME300B 遙控鍵值讀取器 *
12 ;* 數碼管顯示, P0口為數碼管的數據口 *
13 ;* *
14 ;* K17鍵按下,繼電器吸合。K19鍵按下,繼電器關閉。 *
15 ;* *
16 ;********************************************************************************
17 ;* 【版權】 Copyright(C)偉納電子 www.willar.com All Rights Reserved *
18 ;* 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息! *
19 ;********************************************************************************
20
21 ;-----------------------------------------------
0020 22 IRCOM EQU 20H ;20H-23H IR使用
23
00B2 24 IRIN EQU P3.2
00B7 25 BEEP EQU P3.7
0093 26 RELAY EQU P1.3
27 ;------------------------------------------------
0000 28 ORG 0000H
0000 8003 29 JMP MAIN
30
0003 31 ORG 0003H ;外部中斷INT0入口地址
0003 802A 32 JMP IR_IN
33 ;------------------------------------------------
0005 34 MAIN:
0005 758160 35 MOV SP,#60H
0008 7400 36 MOV A,#00H
000A 7820 37 MOV R0,#20H
000C F6 38 LOOP0: MOV @R0,A ;20H-27H清零
000D 08 39 INC R0
000E B828FB 40 CJNE R0,#28H,LOOP0
0011 75A881 41 MOV IE,#81H ;允許總中斷中斷,使能 INT0 外部中斷
0014 758801 42 MOV TCON,#01H ;觸發方式為脈沖負邊沿觸發
43
0017 D2B2 44 SETB IRIN
0019 D2B7 45 SETB BEEP
001B D293 46 SETB RELAY
001D 11A2 47 CALL IR_SHOW
48
001F 49 LOOP1:
001F 11A2 50 CALL IR_SHOW
0021 E522 51 MOV A,22H
0023 B44002 52 CJNE A,#40H,LOOP2 ;K17鍵按下
0026 C293 53 CLR RELAY ;繼電器吸合
0028 B40402 54 LOOP2: CJNE A,#04H,LOOP3 ;K19鍵按下
002B D293 55 SETB RELAY ;繼電器關閉
002D 80F0 56 LOOP3: JMP LOOP1
57
58 ;---------------------------------------------------
A51 MACRO ASSEMBLER IR_DSY 03/29/2005 16:10:00 PAGE 2
59 ; IR 譯碼子程序
60 ;---------------------------------------------------
002F 61 IR_IN:
002F C2AF 62 CLR EA ;暫時關閉CPU的所有中斷請求
0031 C0E0 63 PUSH ACC
0033 C0D0 64 PUSH PSW
0035 D2D3 65 SETB PSW.3 ;選擇工作寄存器組1
0037 C2D4 66 CLR PSW.4
0039 7A04 67 MOV R2,#04H
003B 7820 68 MOV R0,#IRCOM
003D 30B204 69 I1: JNB IRIN,I2 ;等待 IR 信號出現
0040 DAFB 70 DJNZ R2,I1
0042 803E 71 JMP IR_OUT ;IR信號沒出現,退出。
0044 7C14 72 I2: MOV R4,#20
0046 11EF 73 I20: CALL DEL
0048 DCFC 74 DJNZ R4,I20
004A 20B2F0 75 JB IRIN,I1 ;確認IR信號出現
004D 20B204 76 I21: JB IRIN,I3 ;等 IR 變為高電平
0050 11EF 77 CALL DEL
0052 80F9 78 JMP I21
0054 7B00 79 I3: MOV R3,#0 ;8位數清為0
0056 30B204 80 LL: JNB IRIN,I4 ;等 IR 變為低電平
0059 11EF 81 CALL DEL
005B 80F9 82 JMP LL
005D 20B204 83 I4: JB IRIN,I5 ;等 IR 變為高電平
0060 11EF 84 CALL DEL
0062 80F9 85 JMP I4
0064 7A00 86 I5: MOV R2,#0 ;0.14ms 計數
0066 11EF 87 L1: CALL DEL
0068 20B213 88 JB IRIN, N1 ;等 IR 變為高電平
89 ;IR=0,檢查R2中的計數值
006B 7408 90 MOV A,#8
006D C3 91 CLR C
006E 9A 92 SUBB A,R2 ;判斷高低位
93 ;IF C=0 BIT=0
006F E6 94 MOV A,@R0
0070 13 95 RRC A
0071 F6 96 MOV @R0,A ;處理完一位
0072 0B 97 INC R3
0073 BB08E0 98 CJNE R3,#8,LL ;需處理完8位
0076 7B00 99 MOV R3,#0
0078 08 100 INC R0
0079 B824DA 101 CJNE R0,#24H,LL ;收集到4字節了
007C 800B 102 JMP IR_COMP
007E 0A 103 N1: INC R2
007F BA1EE4 104 CJNE R2,#30,L1 ;0.14ms 計數過長則時間到自動離開
105
0082 D0D0 106 IR_OUT: POP PSW
0084 D0E0 107 POP ACC
0086 D2AF 108 SETB EA
0088 32 109 RETI
110 ;---------------------------------------------------------------
111 ;鍵值比較與鍵值數據處理
112 ;22H存入用戶編碼,23H存入用戶編碼的反碼
113 ;---------------------------------------------------------------
0089 114 IR_COMP:
0089 E522 115 MOV A,22H
008B F4 116 CPL A ;將22H取反后和23H比較
008C B523F3 117 CJNE A,23H,IR_OUT ;如果不等表示接收數據發生錯誤,放棄
008F 118 IR_CHULI:
008F E522 119 MOV A,22H
0091 540F 120 ANL A,#0FH
0093 F525 121 MOV 25H,A ;送個位顯示單元
0095 E522 122 MOV A,22H
0097 54F0 123 ANL A,#0F0H
0099 C4 124 SWAP A
A51 MACRO ASSEMBLER IR_DSY 03/29/2005 16:10:00 PAGE 3
009A F526 125 MOV 26H,A ;送十位顯示單元
009C 11A2 126 CALL IR_SHOW ;顯示鍵值
009E 11D1 127 CALL BEEP_BL ;蜂鳴器鳴響表示解碼成功
00A0 80E0 128 JMP IR_OUT
129
130 ;=======================================================
131 ;鍵值顯示
132 ;=======================================================
00A2 133 IR_SHOW:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -