📄 prac10_matrix.lst
字号:
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1254
1255
1256
2 ;-------------------------------------------------------------
3 ;MSP-Test44x Demo key,LCD
4 ;
5 ; MSP430F449
6 ; -----------------
7 ; /|\| XIN|-
8 ; | | | key
9 ; LCD --|RST XOUT|-
10 ; ---------- | | | |
11 ; | COM0|<---|COM0 P1.0|------>|1 2 3 * |
12 ; | . | . | . . | . |4 5 6 0 |
13 ; | COM3|<---|COM3 . | . |7 8 9 # |
14 ; | S0 |<---|S0 . | . | |
15 ; | . | . | P1.7|------>| |
16 ; | S14|<---|S14 |
17 ;
18 ;--------------------------------------------------------------
200 19 flag equ 200h ;
201 20 led_disp_data equ 201h ;
202 21 led_disp_bit equ 202h ;
203 22 com_byte equ 203h ;
204 23 buffer equ 204h
205 24 key_num equ 205h ;
206 25 counter1 equ 206h ;
207 26 key_vaule equ 207h ;
208 27 key_buff equ 208h ;
209 28 counter equ 209h ;
29
30 ;---------------------------------------------------------------
31 ;-------------- flag byte defin ---------------------------
32 ;---------------------------------------------------------------
01 33 ms equ 01h ;
02 34 key_press equ 02h ;
01 35 flash_busy_bit equ 01h
36 ;---------------------------------------------------------------
37 ;--------------- port defin ----------------------------
38 ;---------------------------------------------------------------
39 ;
40 ;
41 ;
42 ;
43 ;
44 ;
45 ;
46 ;
47
48 ;----------------------------------------------------------------
49 .pseg code, abs=01100h
50 ;----------------------------------------------------------------
51 Reset
1100 3140000a 52 mov.w #0a00h,SP
53 StopWDT
1104 b240805a2001 54 mov.w #(0x5A00)+(0x0080),&WDTCTL
110a f2430802 55 mov.b #0ffh,&key_buff
110e f2d00f002200 56 bis.b #0fh,&P1DIR
1114 f0d20bef 57 bis.b #08h,P1OUT
1118 e0d207ef 58 bis.b #04h,P1OUT
111c e0d303ef 59 bis.b #02h,P1OUT
1120 b0126611 60 call #lcd_display_ona ;open lcd
61 ;----------------------------------------------------------------
62 ;
63 ;----------------------------------------------------------------
64 mainloop
1124 52120802 65 push.b &key_buff
1128 f2410802 66 pop.b &key_buff
112c 7f43 67 mov.b #0ffh,r15
112e 5f83 68 delay dec.b r15
1130 fe23 69 jnz delay
1132 b0123c11 70 call #lcd_display ;lcd display
1136 b0129011 71 call #scan_key_deal
113a f43f 72 jmp mainloop
73
74
75 ;----------------------------------------------------------------
76
77 ;----------------------------------------------------------------
78 lcd_display
113c 7f409100 79 mov.b #LCDM1,R15
80
1140 5d420802 81 mov.b &key_buff,R13
1144 7df00f00 82 and.b #0fh,R13
1148 5e4d6c12 83 mov.b lcd_table(R13),R14
114c cf4e0100 84 mov.b R14,1(R15)
1150 cf4e0000 85 mov.b R14,0(R15)
1154 cf4e0300 86 mov.b R14,3(R15)
1158 cf4e0200 87 mov.b R14,2(R15)
115c cf4e0500 88 mov.b R14,5(R15)
1160 cf4e0400 89 mov.b R14,4(R15)
1164 3041 90 ret
91 ;-----------------------------------------------------------
92
93 lcd_display_ona
1166 f240fc003300 94 mov.b #0FCh,&P5SEL ;Enable R(LCD) + COM Lines
116c f2405d009000 95 mov.b #(0x01)+((0x10)+(0x08)+(0x04))+(0x40),&LCDCTL ;STK LCD 4Mux, S0-S19
1172 b0128011 96 call #show_clr ;clear LCD
1176 f24010004000 97 mov.b #(0x10),&BTCTL
117c 0943 98 clr R9
117e 3041 99 ret
100
101
102 ;-----------------------------------------------------------
103 ;
104 ;-----------------------------------------------------------
105 show_clr
1180 4f43 106 mov.b #00h,r15 ; clear display memory
107 show_clr1
1182 cf439100 108 mov.b #00h,((0x0091))(r15)
1186 5f53 109 inc.b r15
1188 7f900a00 110 cmp.b #0ah,r15
118c fa23 111 jnz show_clr1
118e 3041 112 ret
113
114
115 ;--------------------------------------------------
116 ;
117 ;--------------------------------------------------
118 scan_key_deal
1190 f0400f008eee 119 mov.b #0fh,P1DIR ;
1196 f2430302 120 mov.b #0ffh,&com_byte
119a f0c285ee 121 bic.b #08h,P1OUT
119e e0c281ee 122 bic.b #04h,P1OUT
11a2 e0c37dee 123 bic.b #02h,P1OUT
11a6 0343 124 NOP
11a8 0343 125 nop
11aa 0343 126 nop
11ac d24220000402 127 mov.b &P1IN,&buffer
11b2 f2f0f0000402 128 and.b #0f0h,&buffer
11b8 f290f0000402 129 cmp.b #0f0h,&buffer
11be 3624 130 jz ret_end ;
11c0 f0d25fee 131 bis.b #08h,P1OUT ;
11c4 e0d25bee 132 bis.b #04h,P1OUT
11c8 e0d357ee 133 bis.b #02h,P1OUT
11cc f2430302 134 mov.b #0ffh,&com_byte
11d0 0343 135 nop
11d2 0343 136 nop
11d4 c2430502 137 clr.b &key_num ;
11d8 e2430302 138 mov.b #02h,&com_byte
11dc d0c025f041ee 139 bic.b com_byte,P1OUT
11e2 f24003000602 140 mov.b #03h,&counter1 ;
11e8 12d3 141 setc ;set c=1
142 scan
11ea f2b010002000 143 bit.b #10h,&P1IN ;
11f0 2224 144 jz take_key_vaule ;
11f2 d2530502 145 inc.b &key_num ;
146
11f6 f2b020002000 147 bit.b #20h,&P1IN ;
11fc 1c24 148 jz take_key_vaule ;
11fe d2530502 149 inc.b &key_num ;
150
1202 f2b040002000 151 bit.b #40h,&P1IN ;
1208 1624 152 jz take_key_vaule ;
120a d2530502 153 inc.b &key_num ;
154
120e f2b080002000 155 bit.b #80h,&P1IN ;
1214 1024 156 jz take_key_vaule ;
1216 d2530502 157 inc.b &key_num ;
121a d26203020302 158 rlc.b &com_byte ;
1220 d0c0e1effded 159 bic.b com_byte,P1OUT ;
1226 d2830602 160 dec.b &counter1
122a df23 161 jnz scan
162 ret_end
122c e2c30002 163 bic.b #key_press,&flag ;
1230 f043d5ef 164 mov.b #0ffh,key_vaule
1234 3041 165 ret
166 take_key_vaule
1236 e2d30002 167 bis.b #key_press,&flag
168 test_key_m1
123a d240e4ed0402 169 mov.b P1IN,&buffer ;
1240 f2f0f0000402 170 and.b #0f0h,&buffer
1246 f290f0000402 171 cmp.b #0f0h,&buffer
124c f623 172 jnz test_key_m1 ;
124e 56420502 173 mov.b &key_num,R6 ;
1252 d24660120702 174 mov.b key_table(R6),&key_vaule
1258 d24660120802 175 mov.b key_table(R6),&key_buff
176 retun_end
125e 3041 177 ret
178 ;-----------------------------------------------------------------
179 ;
180 ;-----------------------------------------------------------------
181 key_table
1260 0b 182 db 0bh ;*(key_vaule) 00(key_nem)
1261 09 183 db 09h ;9 01
1262 08 184 db 08h ;8 02
1263 07 185 db 07h ;7 03
1264 00 186 db 00h ;0 04
1265 06 187 db 06h ;6 05
1266 05 188 db 05h ;5 06
1267 04 189 db 04h ;4 07
1268 0a 190 db 0ah ;# 08
1269 03 191 db 03h ;3 09
126a 02 192 db 02h ;2 0a
126b 01 193 db 01h ;1 0b
194
195 ;-----------------------------------------------------------
196 ;
197 ;-----------------------------------------------------------
198 lcd_table
126c 7b 199 db 7bh ;0
126d 12 200 db 12h ;1
126e 4f 201 db 4fh ;2
126f 1f 202 db 1fh ;3
1270 36 203 db 36h ;4
1271 3d 204 db 3dh ;5
1272 7d 205 db 7dh ;6
1273 13 206 db 13h ;7
1274 7f 207 db 7fh ;8
1275 3f 208 db 3fH ;9
1276 6d 209 DB 06dH ;e
1277 65 210 DB 065H ;f
211 ;------------------------------------------------------------
212 ; Interrupt Vector Table
213 ;-----------------------------------------------------------
214 .pseg INT_VECTORS,abs=0xFFE0 ; MSP430 RESET Vector
215 ;-------------------------------------------------------------
ffe0 0011 216 DW Reset ;0FFE0h
ffe2 0011 217 DW Reset ;0FFE2h
ffe4 0011 218 DW Reset ;0FFE4h
ffe6 0011 219 DW Reset ;0FFE6h
ffe8 0011 220 DW Reset ;0FFE8h
ffea 0011 221 DW Reset ;0FFEAh
ffec 0011 222 DW Reset ;0FFECh
ffee 0011 223 DW Reset ;0FFEEh
fff0 0011 224 DW Reset ;0FFF0h
fff2 0011 225 DW Reset ;0FFF2h
fff4 0011 226 DW Reset ;0FFF4h
fff6 0011 227 DW Reset ;0FFF6h
fff8 0011 228 DW Reset ;0FFF8h
fffa 0011 229 DW Reset ;0FFFAh
fffc 0011 230 DW Reset ;0FFFCh
fffe 0011 231 DW Reset ;0FFFEh
232 END
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -