?? pc_8535.lst
字號:
017F 3041 CPI R20,1
0180 E0E0 LDI R30,0
0181 075E CPC R21,R30
0182 F0D4 BLT 0x019D
0183 304B CPI R20,0xB
0184 E0E0 LDI R30,0
0185 075E CPC R21,R30
0186 F009 BEQ 0x0188
0187 C015 RJMP 0x019D
(0097) {
(0098) case 11:{
(0099) if ((PIN_KB&(1<<DATAPIN))!=0)
0188 9B83 SBIS P10,3
0189 C001 RJMP 0x018B
(0100) return;
018A C01E RJMP 0x01A9
(0101) else
(0102) bitcount--;
018B D0C5 RCALL 0x0251
(0103) break;}
018C C01C RJMP 0x01A9
(0104) case 2:{
(0105) bitcount--;
018D D0C3 RCALL 0x0251
(0106) break;}
018E C01A RJMP 0x01A9
(0107) case 1:{
(0108) bitcount--;
018F D0C1 RCALL 0x0251
(0109) if ((PIN_KB&(1<<DATAPIN))==0)
0190 9983 SBIC P10,3
0191 C004 RJMP 0x0196
(0110) {
(0111) bitcount=11;
0192 E08B LDI R24,0xB
0193 938000B5 STS R24,_bitcount
(0112) return;
0195 C013 RJMP 0x01A9
(0113) }
(0114) else
(0115) {
(0116) bitcount=11;
0196 E08B LDI R24,0xB
0197 938000B5 STS R24,_bitcount
(0117) decode(data);
0199 91000074 LDS R16,0x74
019B DF60 RCALL _decode
(0118) }
(0119) break;}
019C C00C RJMP 0x01A9
(0120) default:{
(0121) data = (data >> 1);
019D 90200074 LDS R2,0x74
019F 9426 LSR R2
01A0 92200074 STS R2,0x74
(0122) if((PIN_KB&(1<<DATAPIN))!=0)
01A2 9B83 SBIS P10,3
01A3 C004 RJMP 0x01A8
(0123) data|=0x80;
01A4 2D82 MOV R24,R2
01A5 6880 ORI R24,0x80
01A6 93800074 STS R24,0x74
(0124) bitcount--;
01A8 D0A8 RCALL 0x0251
(0125) }
(0126) }
(0127) }
01A9 D056 RCALL pop_gset1
01AA D03B RCALL pop_lset
01AB 9518 RETI
FILE: D:\ICC-AVR\examples.sl\pc_8535\pc_8535.c
(0001) /*******************************************/
(0002) /* PC機鍵盤演示程序 */
(0003) /* 廣州雙龍電子有限公司 */
(0004) /* http://www.sl.com.cn */
(0005) /* 作者:詹衛前 */
(0006) /* MCU:AT90S8535 晶振:8MHZ */
(0007) /* 使用ICCAVR的終端調試窗口觀察PC鍵盤數據 */
(0008) /* 連線說明: SL-AVRAD */
(0009) /* 1、PC鍵盤clock--PD.2 */
(0010) /* 2、PC鍵盤data---PD.3 */
(0011) /* 3、D232.T-------PD.1 */
(0012) /* 4、D232.R-------PD.0 */
(0013) /*******************************************/
(0014) #include<io8535.h>
(0015) #include<stdio.h>
(0016) extern unsigned char get_char(void);
(0017) extern void init_kb(void);
(0018) //UART初始化
(0019) void uart0_init(void)
(0020) {
(0021) UCR = 0x00;
_uart0_init:
01AC 2422 CLR R2
01AD B82A OUT P0A,R2
(0022) UBRR = 0x19;//BAUD=19200
01AE E189 LDI R24,0x19
01AF B989 OUT P09,R24
(0023) UCR|=(1<<TXEN) ;//使能發送
01B0 9A53 SBI P0A,3
(0024) }
01B1 9508 RET
(0025) //端口初始化
(0026) void port_init(void)
(0027) {
(0028) DDRD=0x02;
_port_init:
01B2 E082 LDI R24,2
01B3 BB81 OUT P11,R24
(0029) PORTD=0xff;
01B4 EF8F LDI R24,0xFF
01B5 BB82 OUT P12,R24
(0030) }
01B6 9508 RET
(0031) //PC鍵盤演示程序,SHIFT鍵和按鍵同時按下時為大寫
(0032) void main(void)
(0033) {
(0034) unsigned char key;
(0035) port_init();
_main:
key --> R20
01B7 DFFA RCALL _port_init
(0036) uart0_init();
01B8 DFF3 RCALL _uart0_init
(0037) init_kb();
01B9 DF38 RCALL _init_kb
(0038) puts("PC鍵盤演示程序");
01BA E602 LDI R16,0x62
01BB E010 LDI R17,0
01BC D074 RCALL _puts
(0039) putchar(0x0d);
01BD E00D LDI R16,0xD
01BE D05D RCALL _putchar
01BF C00D RJMP 0x01CD
(0040) while(1)
(0041) {
(0042) key=get_char();
01C0 DF15 RCALL _get_char
01C1 2F40 MOV R20,R16
(0043) if(key!=0)
01C2 2300 TST R16
01C3 F049 BEQ 0x01CD
(0044) {
(0045) if (key==0x0d)//回車鍵處理
01C4 300D CPI R16,0xD
01C5 F429 BNE 0x01CB
(0046) {
(0047) putchar('\n');
01C6 E00A LDI R16,0xA
01C7 D054 RCALL _putchar
(0048) putchar(key);
01C8 2F04 MOV R16,R20
01C9 D052 RCALL _putchar
(0049) }
01CA C002 RJMP 0x01CD
(0050) else
(0051) putchar(key);
01CB 2F04 MOV R16,R20
01CC D04F RCALL _putchar
(0052) }
(0053) }
01CD CFF2 RJMP 0x01C0
(0054) }
FILE: <library>
01CE 9508 RET
push_lset:
01CF 93FA ST R31,-Y
01D0 93EA ST R30,-Y
01D1 93BA ST R27,-Y
01D2 93AA ST R26,-Y
01D3 939A ST R25,-Y
01D4 938A ST R24,-Y
01D5 933A ST R19,-Y
01D6 932A ST R18,-Y
01D7 931A ST R17,-Y
01D8 930A ST R16,-Y
01D9 929A ST R9,-Y
01DA 928A ST R8,-Y
01DB 927A ST R7,-Y
01DC 926A ST R6,-Y
01DD 925A ST R5,-Y
01DE 924A ST R4,-Y
01DF 923A ST R3,-Y
01E0 922A ST R2,-Y
01E1 921A ST R1,-Y
01E2 920A ST R0,-Y
01E3 B60F IN R0,P3F
01E4 920A ST R0,-Y
01E5 9508 RET
pop_lset:
01E6 9009 LD R0,Y+
01E7 BE0F OUT P3F,R0
01E8 9009 LD R0,Y+
01E9 9019 LD R1,Y+
01EA 9029 LD R2,Y+
01EB 9039 LD R3,Y+
01EC 9049 LD R4,Y+
01ED 9059 LD R5,Y+
01EE 9069 LD R6,Y+
01EF 9079 LD R7,Y+
01F0 9089 LD R8,Y+
01F1 9099 LD R9,Y+
01F2 9109 LD R16,Y+
01F3 9119 LD R17,Y+
01F4 9129 LD R18,Y+
01F5 9139 LD R19,Y+
01F6 9189 LD R24,Y+
01F7 9199 LD R25,Y+
01F8 91A9 LD R26,Y+
01F9 91B9 LD R27,Y+
01FA 91E9 LD R30,Y+
01FB 91F9 LD R31,Y+
01FC 9508 RET
push_gset1:
01FD 935A ST R21,-Y
01FE 934A ST R20,-Y
01FF 9508 RET
pop_gset1:
0200 E0E1 LDI R30,1
pop:
0201 9149 LD R20,Y+
0202 9159 LD R21,Y+
0203 FDE0 SBRC R30,0
0204 9508 RET
0205 9169 LD R22,Y+
0206 9179 LD R23,Y+
0207 FDE1 SBRC R30,1
0208 9508 RET
0209 90A9 LD R10,Y+
020A 90B9 LD R11,Y+
020B FDE2 SBRC R30,2
020C 9508 RET
020D 90C9 LD R12,Y+
020E 90D9 LD R13,Y+
020F FDE3 SBRC R30,3
0210 9508 RET
0211 90E9 LD R14,Y+
0212 90F9 LD R15,Y+
0213 9508 RET
push_gset2:
0214 937A ST R23,-Y
0215 936A ST R22,-Y
0216 CFE6 RJMP push_gset1
push_gset3:
0217 92BA ST R11,-Y
0218 92AA ST R10,-Y
0219 CFFA RJMP push_gset2
pop_gset3:
021A E0E4 LDI R30,4
021B CFE5 RJMP pop
_putchar:
021C DFE0 RCALL push_gset1
021D 2F40 MOV R20,R16
021E 903000B7 LDS R3,__textmode+1
0220 902000B6 LDS R2,__textmode
0222 2022 TST R2
0223 F411 BNE 0x0226
0224 2033 TST R3
0225 F021 BEQ 0x022A
0226 304A CPI R20,0xA
0227 F411 BNE 0x022A
0228 E00D LDI R16,0xD
0229 DFF2 RCALL _putchar
022A 9B5D SBIS P0B,5
022B CFFE RJMP 0x022A
022C B94C OUT P0C,R20
022D 2F04 MOV R16,R20
022E 2711 CLR R17
022F DFD0 RCALL pop_gset1
0230 9508 RET
_puts:
0231 DFCB RCALL push_gset1
0232 2F40 MOV R20,R16
0233 2F51 MOV R21,R17
0234 C006 RJMP 0x023B
0235 2FE4 MOV R30,R20
0236 2FF5 MOV R31,R21
0237 8100 LDD R16,0+Z
0238 DFE3 RCALL _putchar
0239 5F4F SUBI R20,0xFF
023A 4F5F SBCI R21,0xFF
023B 2FE4 MOV R30,R20
023C 2FF5 MOV R31,R21
023D 8020 LDD R2,0+Z
023E 2022 TST R2
023F F7A9 BNE 0x0235
0240 E00A LDI R16,0xA
0241 DFDA RCALL _putchar
0242 E001 LDI R16,1
0243 E010 LDI R17,0
0244 DFBB RCALL pop_gset1
0245 9508 RET
<created procedures>:
0246 E090 LDI R25,0
0247 2E24 MOV R2,R20
0248 2433 CLR R3
0249 0C22 LSL R2
024A 1C33 ROL R3
024B 0E28 ADD R2,R24
024C 1E39 ADC R3,R25
024D 2DE2 MOV R30,R2
024E 2DF3 MOV R31,R3
024F 95C8 LPM
0250 9508 RET
0251 918000B5 LDS R24,_bitcount
0253 5081 SUBI R24,1
0254 938000B5 STS R24,_bitcount
0256 9508 RET
0257 E081 LDI R24,1
0258 93800071 STS R24,0x71
025A 93800073 STS R24,0x73
025C 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -