?? main.lst
字號:
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE main.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*************************************************************************
2 ; main.asm
3 ; 16×16 LED點陣的掃描顯示:滾動顯示文字
4 ;*************************************************************************
5
6
7 ;*************************************************************************
8 ;設置屏幕滾動速度(單位:×10ms)
9 ;*************************************************************************
000F 10 SCROLL_SPEED EQU 15
11
12
13 ;*************************************************************************
14 ;定義I/O端口
15 ;*************************************************************************
0093 16 STR BIT P1.3 ;74HC595存儲寄存器時鐘(Storage register clock)
0094 17 SI BIT P1.4 ;74HC595串行輸入信號(Serial Input)
0095 18 SCK BIT P1.5 ;74HC595移位寄存器時鐘(Shift register clock)
19
20
21 ;*************************************************************************
22 ;定義全局變量
23 ;*************************************************************************
0030 24 DispBuf IDATA 0x30 ;定義顯示緩沖區(在T1定時中斷里掃描)
0050 25 T1INTSVC_n DATA 0x30+32 ;函數T1INTSVC()中的靜態變量
26
27
28 ;*************************************************************************
29 ;復位入口
30 ;*************************************************************************
0000 31 ORG 0x0000
0000 0204FE 32 LJMP Premain
33
34
35 ;*************************************************************************
36 ;T1中斷入口
37 ;*************************************************************************
001B 38 ORG 0x001B
001B 02062E 39 LJMP T1INTSVC
40
41
42 ;*************************************************************************
43 ;文件包含
44 ;*************************************************************************
45 ;$include (Branch.INC) ;分支判斷
+1 46 ;*************************************************************************
+1 47 ;實用的8051單片機分支判斷程序
+1 48 ;直接對應于C語言中的條件判斷語句(相反條件)
+1 49 ;適用于Keil C51編譯器
+1 50 ;*************************************************************************
+1 51
+1 52
+1 53 ;*************************************************************************
+1 54 ;宏定義:BEQ_B(Branch if Equal)
+1 55 ;功能:兩個位變量比較,如果相等則跳轉
+1 56 ;參數:
+1 57 ; b1,b2:要比較的兩個位變量(或者位變量與位常量比較)
+1 58 ; Label:跳轉目標
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 2
+1 59 ;*************************************************************************
+1 60 BEQ_B MACRO b1, b2, Label
+1 61 LOCAL next
+1 62 MOV C, b2
+1 63 JNB b1, next
+1 64 CPL C
+1 65 next:
+1 66 JNC Label
+1 67 ENDM
+1 68
+1 69
+1 70 ;*************************************************************************
+1 71 ;宏定義:BNE_B(Branch if Not Equal)
+1 72 ;功能:兩個位變量比較,如果不相等則跳轉
+1 73 ;參數:
+1 74 ; b1,b2:要比較的兩個位變量(或者位變量與位常量比較)
+1 75 ; Label:跳轉目標
+1 76 ;*************************************************************************
+1 77 BNE_B MACRO b1, b2, Label
+1 78 LOCAL next
+1 79 MOV C, b2
+1 80 JNB b1, next
+1 81 CPL C
+1 82 next:
+1 83 JC Label
+1 84 ENDM
+1 85
+1 86
+1 87 ;*************************************************************************
+1 88 ;宏定義:BEQ(Branch if Equal)
+1 89 ;功能:單字節數比較,如果相等則跳轉
+1 90 ;參數:
+1 91 ; x,y:要比較的兩個數
+1 92 ; Label:跳轉目標
+1 93 ;*************************************************************************
+1 94 BEQ MACRO x, y, Label
+1 95 MOV A, x
+1 96 XRL A, y
+1 97 JZ Label
+1 98 ENDM
+1 99
+1 100
+1 101 ;*************************************************************************
+1 102 ;宏定義:BNE(Branch if Not Equal)
+1 103 ;功能:單字節數比較,如果不相等則跳轉
+1 104 ;參數:
+1 105 ; x,y:要比較的兩個數
+1 106 ; Label:跳轉目標
+1 107 ;*************************************************************************
+1 108 BNE MACRO x, y, Label
+1 109 MOV A, x
+1 110 CJNE A, y, Label
+1 111 ENDM
+1 112
+1 113
+1 114 ;*************************************************************************
+1 115 ;宏定義:BHS(Branch if High or Same)
+1 116 ;功能:單字節無符號數比較,如果大于或等于則跳轉
+1 117 ;參數:
+1 118 ; x,y:要比較的兩個數
+1 119 ; Label:跳轉目標
+1 120 ;*************************************************************************
+1 121 BHS MACRO x, y, Label
+1 122 MOV A, x
+1 123 CLR C
+1 124 SUBB A, y
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 3
+1 125 JNC Label
+1 126 ENDM
+1 127
+1 128
+1 129 ;*************************************************************************
+1 130 ;宏定義:BHI(Branch if High)
+1 131 ;功能:單字節無符號數比較,如果大于則跳轉
+1 132 ;參數:
+1 133 ; x,y:要比較的兩個數
+1 134 ; Label:跳轉目標
+1 135 ;*************************************************************************
+1 136 BHI MACRO x, y, Label
+1 137 MOV A, x
+1 138 SETB C
+1 139 SUBB A, y
+1 140 JNC Label
+1 141 ENDM
+1 142
+1 143
+1 144 ;*************************************************************************
+1 145 ;宏定義:BLS(Branch if Low or Same)
+1 146 ;功能:單字節無符號數比較,如果小于或等于則跳轉
+1 147 ;參數:
+1 148 ; x,y:要比較的兩個數
+1 149 ; Label:跳轉目標
+1 150 ;*************************************************************************
+1 151 BLS MACRO x, y, Label
+1 152 MOV A, x
+1 153 SETB C
+1 154 SUBB A, y
+1 155 JC Label
+1 156 ENDM
+1 157
+1 158
+1 159 ;*************************************************************************
+1 160 ;宏定義:BLO(Branch if Low)
+1 161 ;功能:單字節無符號數比較,如果小于則跳轉
+1 162 ;參數:
+1 163 ; x,y:要比較的兩個數
+1 164 ; Label:跳轉目標
+1 165 ;*************************************************************************
+1 166 BLO MACRO x, y, Label
+1 167 MOV A, x
+1 168 CLR C
+1 169 SUBB A, y
+1 170 JC Label
+1 171 ENDM
+1 172
+1 173
+1 174 ;*************************************************************************
+1 175 ;宏定義:JZ_W
+1 176 ;功能:雙字節數為0跳轉
+1 177 ;參數:
+1 178 ; (xh,xl):要判斷的數
+1 179 ; Label:跳轉目標
+1 180 ;*************************************************************************
+1 181 JZ_W MACRO xh,xl, Label
+1 182 MOV A, xh
+1 183 ORL A, xl
+1 184 JZ Label
+1 185 ENDM
+1 186
+1 187
+1 188 ;*************************************************************************
+1 189 ;宏定義:JNZ_W
+1 190 ;功能:雙字節數不為0跳轉
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 4
+1 191 ;參數:
+1 192 ; (xh,xl):要判斷的數
+1 193 ; Label:跳轉目標
+1 194 ;*************************************************************************
+1 195 JNZ_W MACRO xh,xl, Label
+1 196 MOV A, xh
+1 197 ORL A, xl
+1 198 JNZ Label
+1 199 ENDM
+1 200
+1 201
+1 202 ;*************************************************************************
+1 203 ;宏定義:DJNZ_W
+1 204 ;功能:雙字節數自減1,結果不為0跳轉
+1 205 ;參數:
+1 206 ; (xh,xl):要操作的數
+1 207 ; Label:跳轉目標
+1 208 ;*************************************************************************
+1 209 DJNZ_W MACRO xh,xl, Label
+1 210 LOCAL next
+1 211 MOV A, xl
+1 212 JNZ next
+1 213 DEC xh
+1 214 next:
+1 215 DEC xl
+1 216 MOV A, xh
+1 217 ORL A, xl
+1 218 JNZ Label
+1 219 ENDM
+1 220
+1 221
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -