📄 app.lst
字号:
(0143) DDRD = 0xff;
017B BB81 OUT 0x11,R24
(0144) }
017C 9508 RET
(0145)
(0146) void watchdog_init(void)
(0147) {
(0148) WDR(); //this prevents a timout on enabling
_watchdog_init:
017D 95A8 WDR
(0149) WDTCR|=(1<<WDCE)|(1<<WDE);
017E B581 IN R24,0x21
017F 6188 ORI R24,0x18
0180 BD81 OUT 0x21,R24
(0150) WDTCR = (1<<WDE)|(1<<WDP2)|(1<<WDP0); //WATCHDOG ENABLED - dont forget WDR
0181 E08D LDI R24,0xD
0182 BD81 OUT 0x21,R24
(0151) }
0183 9508 RET
(0152) void uart0_init(void)
(0153) {
(0154) UBRRH = 0x00; //set baud rate
_uart0_init:
0184 2422 CLR R2
0185 B822 OUT 0x02,R2
(0155) UBRRL = 0x01; //set baud rate
0186 E081 LDI R24,1
0187 B989 OUT 0x09,R24
(0156) UCSRA|=BIT(MPCM);
0188 9A58 SBI 0x0B,0
(0157) UCSRB = 0X94;
0189 E984 LDI R24,0x94
018A B98A OUT 0x0A,R24
(0158) UCSRC = 0x06; //enable
018B E086 LDI R24,6
018C B983 OUT 0x03,R24
(0159) }
018D 9508 RET
(0160) void init_devices(void)
(0161) {
(0162) CLI(); //disable all interrupts
_init_devices:
018E 94F8 BCLR 7
(0163) port_init();
018F DFE6 RCALL _port_init
(0164) watchdog_init();
0190 DFEC RCALL _watchdog_init
(0165) MCUCR = 0x00;//禁止休眠(disable sleep)//
0191 2422 CLR R2
0192 BE25 OUT 0x35,R2
(0166) GIMSK = 0x00;//屏蔽两个外部中断disable exit interrupts//
0193 BE2B OUT 0x3B,R2
(0167) TIMSK = 0x00;//屏蔽定时器中断 disable timer interrupts//
0194 BE29 OUT 0x39,R2
(0168) }
0195 9508 RET
_delay:
dd1 --> R20
dd2 --> R22
dd3 --> R10
count --> R16
0196 D0A5 RCALL push_gset3
(0169) /*******************************
(0170) **delay
(0171) ********************************/
(0172) void delay(uchar count )
(0173) {
(0174) uchar dd1,dd2,dd3;
(0175) for(dd1=0;dd1<count;dd1++)
0197 2744 CLR R20
0198 C00D RJMP 0x01A6
(0176) for(dd2=0;dd2<30;dd2++)
0199 2766 CLR R22
019A C008 RJMP 0x01A3
(0177) for(dd3=0;dd3<250;dd3++)
019B 24AA CLR R10
019C C002 RJMP 0x019F
(0178) WDR();
019D 95A8 WDR
019E 94A3 INC R10
019F 2D8A MOV R24,R10
01A0 3F8A CPI R24,0xFA
01A1 F3D8 BCS 0x019D
01A2 9563 INC R22
01A3 316E CPI R22,0x1E
01A4 F3B0 BCS 0x019B
01A5 9543 INC R20
01A6 1740 CP R20,R16
01A7 F388 BCS 0x0199
(0179) }
01A8 D077 RCALL pop_gset3
01A9 9508 RET
(0180) /*******************************
(0181) **发送数据
(0182) ********************************/
(0183) void send(void)
(0184) {
(0185) signed char i;
(0186)
(0187) PORTD&=~BIT(RCK);
_send:
i --> R16
01AA 9895 CBI 0x12,5
(0188) PORTD&=~BIT(CLK);
01AB 9893 CBI 0x12,3
(0189)
(0190) for(i=48;i>=0;i--)
01AC E300 LDI R16,0x30
01AD C067 RJMP 0x0215
(0191) {
(0192) //****************
(0193) if(redata[i]&0x40)//
01AE E680 LDI R24,0x60
01AF E090 LDI R25,0
01B0 2FE0 MOV R30,R16
01B1 27FF CLR R31
01B2 FDE7 SBRC R30,7
01B3 95F0 COM R31
01B4 0FE8 ADD R30,R24
01B5 1FF9 ADC R31,R25
01B6 8020 LDD R2,Z+0
01B7 FE26 SBRS R2,6
01B8 C002 RJMP 0x01BB
(0194) PORTD|=BIT(DA);
01B9 9A94 SBI 0x12,4
01BA C001 RJMP 0x01BC
(0195) else
(0196) PORTD&=~BIT(DA);
01BB 9894 CBI 0x12,4
(0197) PORTD|=BIT(CLK);
01BC 9A93 SBI 0x12,3
(0198) NOP();
01BD 0000 NOP
(0199) PORTD&=~BIT(CLK);
01BE 9893 CBI 0x12,3
(0200) //==============
(0201) if(redata[i]&0x20)//
01BF E680 LDI R24,0x60
01C0 E090 LDI R25,0
01C1 2FE0 MOV R30,R16
01C2 27FF CLR R31
01C3 FDE7 SBRC R30,7
01C4 95F0 COM R31
01C5 0FE8 ADD R30,R24
01C6 1FF9 ADC R31,R25
01C7 8020 LDD R2,Z+0
01C8 FE25 SBRS R2,5
01C9 C002 RJMP 0x01CC
(0202) PORTD|=BIT(DA);
01CA 9A94 SBI 0x12,4
01CB C001 RJMP 0x01CD
(0203) else
(0204) PORTD&=~BIT(DA);
01CC 9894 CBI 0x12,4
(0205) PORTD|=BIT(CLK);
01CD 9A93 SBI 0x12,3
(0206) NOP();
01CE 0000 NOP
(0207) PORTD&=~BIT(CLK);
01CF 9893 CBI 0x12,3
(0208) //===============
(0209) if(redata[i]&0x10)//
01D0 E680 LDI R24,0x60
01D1 E090 LDI R25,0
01D2 2FE0 MOV R30,R16
01D3 27FF CLR R31
01D4 FDE7 SBRC R30,7
01D5 95F0 COM R31
01D6 0FE8 ADD R30,R24
01D7 1FF9 ADC R31,R25
01D8 8020 LDD R2,Z+0
01D9 FE24 SBRS R2,4
01DA C002 RJMP 0x01DD
(0210) PORTD|=BIT(DA);
01DB 9A94 SBI 0x12,4
01DC C001 RJMP 0x01DE
(0211) else
(0212) PORTD&=~BIT(DA);
01DD 9894 CBI 0x12,4
(0213) PORTD|=BIT(CLK);
01DE 9A93 SBI 0x12,3
(0214) NOP();
01DF 0000 NOP
(0215) PORTD&=~BIT(CLK);
01E0 9893 CBI 0x12,3
(0216) //===============
(0217) if(redata[i]&0x04)//
01E1 E680 LDI R24,0x60
01E2 E090 LDI R25,0
01E3 2FE0 MOV R30,R16
01E4 27FF CLR R31
01E5 FDE7 SBRC R30,7
01E6 95F0 COM R31
01E7 0FE8 ADD R30,R24
01E8 1FF9 ADC R31,R25
01E9 8020 LDD R2,Z+0
01EA FE22 SBRS R2,2
01EB C002 RJMP 0x01EE
(0218) PORTD|=BIT(DA);
01EC 9A94 SBI 0x12,4
01ED C001 RJMP 0x01EF
(0219) else
(0220) PORTD&=~BIT(DA);
01EE 9894 CBI 0x12,4
(0221) PORTD|=BIT(CLK);
01EF 9A93 SBI 0x12,3
(0222) NOP();
01F0 0000 NOP
(0223) PORTD&=~BIT(CLK);
01F1 9893 CBI 0x12,3
(0224) //===============
(0225) if(redata[i]&0x02)//
01F2 E680 LDI R24,0x60
01F3 E090 LDI R25,0
01F4 2FE0 MOV R30,R16
01F5 27FF CLR R31
01F6 FDE7 SBRC R30,7
01F7 95F0 COM R31
01F8 0FE8 ADD R30,R24
01F9 1FF9 ADC R31,R25
01FA 8020 LDD R2,Z+0
01FB FE21 SBRS R2,1
01FC C002 RJMP 0x01FF
(0226) PORTD|=BIT(DA);
01FD 9A94 SBI 0x12,4
01FE C001 RJMP 0x0200
(0227) else
(0228) PORTD&=~BIT(DA);
01FF 9894 CBI 0x12,4
(0229) PORTD|=BIT(CLK);
0200 9A93 SBI 0x12,3
(0230) NOP();
0201 0000 NOP
(0231) PORTD&=~BIT(CLK);
0202 9893 CBI 0x12,3
(0232) //===============
(0233) if(redata[i]&0x01)//
0203 E680 LDI R24,0x60
0204 E090 LDI R25,0
0205 2FE0 MOV R30,R16
0206 27FF CLR R31
0207 FDE7 SBRC R30,7
0208 95F0 COM R31
0209 0FE8 ADD R30,R24
020A 1FF9 ADC R31,R25
020B 8020 LDD R2,Z+0
020C FE20 SBRS R2,0
020D C002 RJMP 0x0210
(0234) PORTD|=BIT(DA);
020E 9A94 SBI 0x12,4
020F C001 RJMP 0x0211
(0235) else
(0236) PORTD&=~BIT(DA);
0210 9894 CBI 0x12,4
(0237) PORTD|=BIT(CLK);
0211 9A93 SBI 0x12,3
(0238) NOP();
0212 0000 NOP
(0239) PORTD&=~BIT(CLK);
0213 9893 CBI 0x12,3
0214 950A DEC R16
0215 3000 CPI R16,0
0216 F00C BLT 0x0218
0217 CF96 RJMP 0x01AE
(0240) //===============
(0241) }
(0242) PORTD|=BIT(EN);//OFF DISPLAY
0218 9A96 SBI 0x12,6
(0243) NOP();
0219 0000 NOP
(0244) PORTD|=BIT(RCK);
021A 9A95 SBI 0x12,5
(0245) NOP();
021B 0000 NOP
(0246) PORTD&=~BIT(RCK);//LATCH DATA
021C 9895 CBI 0x12,5
(0247) NOP();
021D 0000 NOP
(0248) PORTD&=~BIT(EN);//ON DISPLAY
021E 9896 CBI 0x12,6
(0249)
(0250) }
FILE: <library>
021F 9508 RET
pop_gset3:
0220 E0E4 LDI R30,4
0221 C004 RJMP pop
push_gset1:
0222 935A ST R21,-Y
0223 934A ST R20,-Y
0224 9508 RET
pop_gset1:
0225 E0E1 LDI R30,1
pop:
0226 9149 LD R20,Y+
0227 9159 LD R21,Y+
0228 FDE0 SBRC R30,0
0229 9508 RET
022A 9169 LD R22,Y+
022B 9179 LD R23,Y+
022C FDE1 SBRC R30,1
022D 9508 RET
022E 90A9 LD R10,Y+
022F 90B9 LD R11,Y+
0230 FDE2 SBRC R30,2
0231 9508 RET
0232 90C9 LD R12,Y+
0233 90D9 LD R13,Y+
0234 FDE3 SBRC R30,3
0235 9508 RET
0236 90E9 LD R14,Y+
0237 90F9 LD R15,Y+
0238 9508 RET
push_gset2:
0239 937A ST R23,-Y
023A 936A ST R22,-Y
023B CFE6 RJMP push_gset1
push_gset3:
023C 92BA ST R11,-Y
023D 92AA ST R10,-Y
023E CFFA RJMP push_gset2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -