📄 74ls165.lst
字号:
(0034) P1 --------- PB1
(0035) P2 --------- PB2
(0036) P3 --------- PB3
(0037) P4 --------- PB4
(0038) P5 --------- PB5
(0039) P6 --------- PB6
(0040) P7 --------- PB7
(0041) PL --------- PD2
(0042) SeialBoard(165SrlPort) M16SD
(0043) VCC --------- VCC
(0044) GND --------- GND
(0045) TXD --------- RXD
(0046) RXD --------- TXD
(0047) ----------------------------------------------------------------------
(0048) 注意事项:
(0049) 详见M16SD说明书
(0050) ----------------------------------------------------------------------
(0051) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0052)
(0053) #include <iom16v.h>
(0054) #include "D:\ICC_H\CmmICC.H"
(0055)
(0056) #define DISP_DDR DDRB
(0057) #define DISP_PORT PORTB
(0058)
(0059) #define SOURCE_DDR DDRA
(0060) #define SOURCE_PORT PORTA
(0061)
(0062) #define IN_RXD cbi(DDRD,0) //PD0 数据口
(0063) #define GET_RXD gbi(PIND,0)
(0064)
(0065) #define OUT_TXD sbi(DDRD,1) //PD1 脉冲口
(0066) #define SET_TXD sbi(PORTD,1)
(0067) #define CLR_TXD cbi(PORTD,1)
(0068)
(0069) #define OUT_PL sbi(DDRD,2) //PD2 锁存口
(0070) #define SET_PL sbi(PORTD,2)
(0071) #define CLR_PL cbi(PORTD,2)
(0072)
(0073) /*--------------------------------------------------------------------
(0074) 函数名称:
(0075) 函数功能:
(0076) 注意事项:
(0077) 提示说明:
(0078) 输 入:
(0079) 返 回:
(0080) --------------------------------------------------------------------*/
(0081) uint8 getDat()
(0082) {
(0083) uint8 i,dat;
(0084)
(0085) for(i=0;i<8;i++)
_getDat:
i --> R16
dat --> R18
01FA 2700 CLR R16
01FB C007 RJMP 0x0203
(0086) {
(0087) SET_TXD;
01FC 9A91 SBI 0x12,1
(0088) if(GET_RXD)
01FD 9B80 SBIS 0x10,0
01FE C001 RJMP 0x0200
(0089) dat |= 0x01;
01FF 6021 ORI R18,1
(0090) dat = dat<<1;
0200 0F22 LSL R18
(0091) CLR_TXD;
0201 9891 CBI 0x12,1
0202 9503 INC R16
0203 3008 CPI R16,0x8
0204 F3B8 BCS 0x01FC
(0092) }
(0093) dat = dat>>1;
0205 9526 LSR R18
(0094) return dat;
0206 2F02 MOV R16,R18
0207 9508 RET
(0095) }
(0096) /*--------------------------------------------------------------------
(0097) 函数名称:
(0098) 函数功能:
(0099) 注意事项:
(0100) 提示说明:
(0101) 输 入:
(0102) 返 回:
(0103) --------------------------------------------------------------------*/
(0104) void main()
(0105) {
(0106) uint8 i;
(0107)
(0108) DISP_DDR = 0XFF;
_main:
i --> Y+1
0208 EF8F LDI R24,0xFF
0209 BB87 OUT 0x17,R24
(0109) SOURCE_DDR = 0XFF;
020A BB8A OUT 0x1A,R24
(0110) OUT_PL;
020B 9A8A SBI 0x11,2
(0111) OUT_TXD;
020C 9A89 SBI 0x11,1
(0112) IN_RXD;
020D 9888 CBI 0x11,0
(0113) //while(1)
(0114) //{
(0115) SOURCE_PORT = 0X55;
020E E585 LDI R24,0x55
020F BB8B OUT 0x1B,R24
(0116) SET_PL;
0210 9A92 SBI 0x12,2
(0117) CLR_PL;
0211 9892 CBI 0x12,2
(0118) SET_PL;
0212 9A92 SBI 0x12,2
(0119) DISP_PORT = getDat();
FILE: <library>
0213 DFE6 RCALL _getDat
0214 BB08 OUT 0x18,R16
0215 9508 RET
push_arg4:
0216 933A ST R19,-Y
0217 932A ST R18,-Y
push_arg2:
0218 931A ST R17,-Y
0219 930A ST R16,-Y
021A 9508 RET
div32u:
021B 94E8 BCLR 6
021C C001 RJMP 0x021E
mod32u:
021D 9468 BSET 6
021E D02F RCALL long_div_prolog
021F 24CC CLR R12
0220 C008 RJMP 0x0229
div32s:
0221 94E8 BCLR 6
0222 C001 RJMP 0x0224
mod32s:
0223 9468 BSET 6
0224 D029 RCALL long_div_prolog
0225 FD37 SBRC R19,7
0226 D053 RCALL neg_R16_R19
0227 FDB7 SBRC R27,7
0228 D05A RCALL neg_R24_R27
0229 2477 CLR R7
022A 2488 CLR R8
022B 2499 CLR R9
022C 24AA CLR R10
022D 24BB CLR R11
022E D041 RCALL tst_R16_R19
022F F0C1 BEQ 0x0248
0230 D044 RCALL tst_R24_R27
0231 F0B1 BEQ 0x0248
0232 E2E8 LDI R30,0x28
0233 0F00 LSL R16
0234 1F11 ROL R17
0235 1F22 ROL R18
0236 1F33 ROL R19
0237 1C77 ROL R7
0238 1C88 ROL R8
0239 1C99 ROL R9
023A 1CAA ROL R10
023B 1CBB ROL R11
023C 1688 CP R8,R24
023D 0699 CPC R9,R25
023E 06AA CPC R10,R26
023F 06BB CPC R11,R27
0240 F028 BCS 0x0246
0241 1A88 SUB R8,R24
0242 0A99 SBC R9,R25
0243 0AAA SBC R10,R26
0244 0ABB SBC R11,R27
0245 9503 INC R16
0246 95EA DEC R30
0247 F759 BNE 0x0233
0248 F426 BRTC 0x024D
0249 2D08 MOV R16,R8
024A 2D19 MOV R17,R9
024B 2D2A MOV R18,R10
024C 2D3B MOV R19,R11
024D C013 RJMP long_div_epilog
long_div_prolog:
024E 927A ST R7,-Y
024F 928A ST R8,-Y
0250 929A ST R9,-Y
0251 92AA ST R10,-Y
0252 92BA ST R11,-Y
0253 92CA ST R12,-Y
0254 93EA ST R30,-Y
0255 938A ST R24,-Y
0256 939A ST R25,-Y
0257 93AA ST R26,-Y
0258 93BA ST R27,-Y
0259 858B LDD R24,Y+11
025A 859C LDD R25,Y+12
025B 85AD LDD R26,Y+13
025C 85BE LDD R27,Y+14
025D 2EC3 MOV R12,R19
025E F00E BRTS 0x0260
025F 26CB EOR R12,R27
0260 9508 RET
long_div_epilog:
0261 FCC7 SBRC R12,7
0262 D017 RCALL neg_R16_R19
0263 91B9 LD R27,Y+
0264 91A9 LD R26,Y+
0265 9199 LD R25,Y+
0266 9189 LD R24,Y+
0267 91E9 LD R30,Y+
0268 90C9 LD R12,Y+
0269 90B9 LD R11,Y+
026A 90A9 LD R10,Y+
026B 9099 LD R9,Y+
026C 9089 LD R8,Y+
026D 9079 LD R7,Y+
026E 9624 ADIW R28,4
026F 9508 RET
tst_R16_R19:
0270 2FE0 MOV R30,R16
0271 2BE1 OR R30,R17
0272 2BE2 OR R30,R18
0273 2BE3 OR R30,R19
0274 9508 RET
tst_R24_R27:
0275 2FE8 MOV R30,R24
0276 2BE9 OR R30,R25
0277 2BEA OR R30,R26
0278 2BEB OR R30,R27
0279 9508 RET
neg_R16_R19:
027A 9500 COM R16
027B 9510 COM R17
027C 9520 COM R18
027D 9530 COM R19
027E 5F0F SUBI R16,0xFF
027F 4F1F SBCI R17,0xFF
0280 4F2F SBCI R18,0xFF
0281 4F3F SBCI R19,0xFF
0282 9508 RET
neg_R24_R27:
0283 9580 COM R24
0284 9590 COM R25
0285 95A0 COM R26
0286 95B0 COM R27
0287 5F8F SUBI R24,0xFF
0288 4F9F SBCI R25,0xFF
0289 4FAF SBCI R26,0xFF
028A 4FBF SBCI R27,0xFF
028B 9508 RET
empy32s:
empy32u:
028C 940E02E1 CALL long_prolog
028E 927F PUSH R7
028F 940E02FA CALL tstzero1
0291 F139 BEQ 0x02B9
0292 2477 CLR R7
0293 940E0300 CALL tstzero2
0295 F419 BNE 0x0299
0296 018C MOVW R16,R24
0297 019D MOVW R18,R26
0298 C020 RJMP 0x02B9
0299 9F08 MUL R16,R24
029A 2CB0 MOV R11,R0
029B 2CA1 MOV R10,R1
029C 9F28 MUL R18,R24
029D 2C90 MOV R9,R0
029E 2C81 MOV R8,R1
029F 9F18 MUL R17,R24
02A0 0CA0 ADD R10,R0
02A1 1C91 ADC R9,R1
02A2 1C87 ADC R8,R7
02A3 9F09 MUL R16,R25
02A4 0CA0 ADD R10,R0
02A5 1C91 ADC R9,R1
02A6 1C87 ADC R8,R7
02A7 9F19 MUL R17,R25
02A8 0C90 ADD R9,R0
02A9 1C81 ADC R8,R1
02AA 9F0A MUL R16,R26
02AB 0C90 ADD R9,R0
02AC 1C81 ADC R8,R1
02AD 9F38 MUL R19,R24
02AE 0C80 ADD R8,R0
02AF 9F29 MUL R18,R25
02B0 0C80 ADD R8,R0
02B1 9F1A MUL R17,R26
02B2 0C80 ADD R8,R0
02B3 9F0B MUL R16,R27
02B4 0C80 ADD R8,R0
02B5 2D0B MOV R16,R11
02B6 2D1A MOV R17,R10
02B7 2D29 MOV R18,R9
02B8 2D38 MOV R19,R8
02B9 907F POP R7
02BA 940C02EF JMP long_epilog
pop_gset2:
02BC E0E2 LDI R30,2
02BD 940C02CE JMP pop
pop_gset4:
02BF E0E8 LDI R30,0x8
02C0 940C02CE JMP pop
push_gset5:
02C2 92FA ST R15,-Y
02C3 92EA ST R14,-Y
push_gset4:
02C4 92DA ST R13,-Y
02C5 92CA ST R12,-Y
push_gset3:
02C6 92BA ST R11,-Y
02C7 92AA ST R10,-Y
push_gset2:
02C8 937A ST R23,-Y
02C9 936A ST R22,-Y
push_gset1:
02CA 935A ST R21,-Y
02CB 934A ST R20,-Y
02CC 9508 RET
pop_gset1:
02CD E0E1 LDI R30,1
pop:
02CE 9149 LD R20,Y+
02CF 9159 LD R21,Y+
02D0 FDE0 SBRC R30,0
02D1 9508 RET
02D2 9169 LD R22,Y+
02D3 9179 LD R23,Y+
02D4 FDE1 SBRC R30,1
02D5 9508 RET
02D6 90A9 LD R10,Y+
02D7 90B9 LD R11,Y+
02D8 FDE2 SBRC R30,2
02D9 9508 RET
02DA 90C9 LD R12,Y+
02DB 90D9 LD R13,Y+
02DC FDE3 SBRC R30,3
02DD 9508 RET
02DE 90E9 LD R14,Y+
02DF 90F9 LD R15,Y+
02E0 9508 RET
long_prolog:
02E1 928A ST R8,-Y
02E2 929A ST R9,-Y
02E3 92AA ST R10,-Y
02E4 92BA ST R11,-Y
02E5 93EA ST R30,-Y
02E6 938A ST R24,-Y
02E7 939A ST R25,-Y
02E8 93AA ST R26,-Y
02E9 93BA ST R27,-Y
02EA 8589 LDD R24,Y+9
02EB 859A LDD R25,Y+10
02EC 85AB LDD R26,Y+11
02ED 85BC LDD R27,Y+12
02EE 9508 RET
long_epilog:
02EF 91B9 LD R27,Y+
02F0 91A9 LD R26,Y+
02F1 9199 LD R25,Y+
02F2 9189 LD R24,Y+
02F3 91E9 LD R30,Y+
02F4 90B9 LD R11,Y+
02F5 90A9 LD R10,Y+
02F6 9099 LD R9,Y+
02F7 9089 LD R8,Y+
02F8 9624 ADIW R28,4
02F9 9508 RET
tstzero1:
02FA 27EE CLR R30
02FB 2BE0 OR R30,R16
02FC 2BE1 OR R30,R17
02FD 2BE2 OR R30,R18
02FE 2BE3 OR R30,R19
02FF 9508 RET
tstzero2:
0300 27EE CLR R30
0301 2BE8 OR R30,R24
0302 2BE9 OR R30,R25
0303 2BEA OR R30,R26
0304 2BEB OR R30,R27
0305 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -