📄 ad转换.lst
字号:
__start:
__text_start:
230 E5CF LDI R28,0x5F
231 E0D4 LDI R29,4
232 BFCD OUT 0x3D,R28
233 BFDE OUT 0x3E,R29
234 51C0 SUBI R28,0x10
235 40D0 SBCI R29,0
236 EA0A LDI R16,0xAA
237 8308 STD Y+0,R16
238 2400 CLR R0
239 E6EB LDI R30,0x6B
23A E0F0 LDI R31,0
23B E010 LDI R17,0
23C 36EE CPI R30,0x6E
23D 07F1 CPC R31,R17
23E F011 BEQ 0x0241
23F 9201 ST R0,Z+
240 CFFB RJMP 0x023C
241 8300 STD Z+0,R16
242 E5E4 LDI R30,0x54
243 E0F4 LDI R31,4
244 E6A0 LDI R26,0x60
245 E0B0 LDI R27,0
246 E014 LDI R17,4
247 35EF CPI R30,0x5F
248 07F1 CPC R31,R17
249 F021 BEQ 0x024E
24A 95C8 LPM
24B 9631 ADIW R30,1
24C 920D ST R0,X+
24D CFF9 RJMP 0x0247
24E 940E 0408 CALL _main
_exit:
250 CFFF RJMP _exit
FILE: D:\垃圾站\00\adc\delay.h
(0001) //#define F_CPU 12000000
(0002) #define F_CPU 11059200
(0003) //#define F_CPU 8000000
(0004) //#define F_CPU 7372800
(0005) //#define F_CPU 4000000
(0006) /*************************************************************************
(0007) 通用延时头文件:
(0008) delay_nus(n)延时n微秒
(0009) delay_nms(n)延时n毫秒
(0010) *************************************************************************/
(0011) #if F_CPU == 12000000
(0012) void delay_nus(unsigned int time)
(0013) {
(0014) while (time!=0)
(0015) {
(0016) NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
(0017) time--;
(0018) }
(0019) }
(0020) void delay_nms(unsigned int time)
(0021) {
(0022) unsigned int i;
(0023) while (time!=0)
(0024) {
(0025) for(i=0;i<1740;i++);
(0026) time--;
(0027) }
(0028) }
(0029) #endif
(0030)
(0031) #if F_CPU == 11059200
(0032) void delay_nus(unsigned int time)
(0033) {
_delay_nus:
time --> R16
251 C009 RJMP 0x025B
(0034) while (time!=0)
(0035) {
(0036) NOP();NOP();NOP();NOP();NOP();NOP();NOP();
252 0000 NOP
253 0000 NOP
254 0000 NOP
255 0000 NOP
256 0000 NOP
257 0000 NOP
258 0000 NOP
(0037) time--;
259 5001 SUBI R16,1
25A 4010 SBCI R17,0
25B 3000 CPI R16,0
25C 0701 CPC R16,R17
25D F7A1 BNE 0x0252
25E 9508 RET
_delay_nms:
i --> R20
time --> R16
25F 934A ST R20,-Y
260 935A ST R21,-Y
(0038) }
(0039) }
(0040) void delay_nms(unsigned int time)
(0041) {
261 C00B RJMP 0x026D
(0042) unsigned int i;
(0043) while (time!=0)
(0044) {
(0045) for(i=0;i<1580;i++);
262 2744 CLR R20
263 2755 CLR R21
264 C002 RJMP 0x0267
265 5F4F SUBI R20,0xFF
266 4F5F SBCI R21,0xFF
267 324C CPI R20,0x2C
268 E0E6 LDI R30,6
269 075E CPC R21,R30
26A F3D0 BCS 0x0265
(0046) time--;
26B 5001 SUBI R16,1
26C 4010 SBCI R17,0
26D 3000 CPI R16,0
26E 0701 CPC R16,R17
26F F791 BNE 0x0262
270 9159 LD R21,Y+
271 9149 LD R20,Y+
272 9508 RET
_delay:
i --> R10
n --> R16
273 92AA ST R10,-Y
274 92BA ST R11,-Y
FILE: D:\垃圾站\00\adc\lcd.h
(0001) unsigned char a[10]={'0','1','2','3','4','5','6','7','8','9'};
(0002) unsigned char ADtmp,ADbz=0;
(0003) #define LCD_DATAL PORTA&=~BIT(1)
(0004) #define LCD_DATAH PORTA|=BIT(1)
(0005) #define LCD_CLKL PORTA&=~BIT(3)
(0006) #define LCD_CLKH PORTA|=BIT(3)
(0007) void delay(unsigned char n)
(0008) {
(0009) unsigned char i;
(0010) for(i=0;i<n;i++) //延时
275 24AA CLR R10
276 C002 RJMP 0x0279
(0011) {asm("nop");}
277 0000 NOP
278 94A3 INC R10
279 16A0 CP R10,R16
27A F3E0 BCS 0x0277
27B 90B9 LD R11,Y+
27C 90A9 LD R10,Y+
27D 9508 RET
_lcd_out:
s --> Y,+1
i --> R20
send_byte --> R10
27E 940E 0441 CALL push_xgset300C
280 2EA0 MOV R10,R16
(0012) }
(0013) //*************************************************************************
(0014)
(0015) //***************************************************************************
(0016) void lcd_out(unsigned char send_byte)
(0017) {
(0018) unsigned char i,s;
(0019) for (i=0;i<8;i++)
281 2744 CLR R20
282 C009 RJMP 0x028C
(0020) {
(0021) if((send_byte&0x80)==0)
283 FCA7 SBRC R10,7
284 C002 RJMP 0x0287
(0022) {
(0023) LCD_DATAL;
285 98D9 CBI 0x1B,1
(0024) }
286 C001 RJMP 0x0288
(0025) else
(0026) {
(0027) LCD_DATAH;
287 9AD9 SBI 0x1B,1
(0028) } //送数据
(0029) LCD_CLKL;
288 98DB CBI 0x1B,3
(0030) LCD_CLKH;
289 9ADB SBI 0x1B,3
(0031) send_byte=send_byte<<1;
28A 0CAA LSL R10
28B 9543 INC R20
28C 3048 CPI R20,0x8
28D F3A8 BCS 0x0283
(0032) }
(0033) delay(256);
28E E000 LDI R16,0
28F DFE3 RCALL _delay
290 940C 0446 JMP pop_xgset300C
_WR_dat:
s --> R20
dat --> R22
292 940E 044B CALL push_xgsetF000
294 2F60 MOV R22,R16
(0034) }
(0035) //***************************************************************************
(0036)
(0037) void WR_dat(unsigned char dat)
(0038) {
(0039) unsigned char s;
(0040) s=dat&0xf0;
295 2F46 MOV R20,R22
296 7F40 ANDI R20,0xF0
(0041) lcd_out(0xfa);
297 EF0A LDI R16,0xFA
298 DFE5 RCALL _lcd_out
(0042) lcd_out(s);
299 2F04 MOV R16,R20
29A DFE3 RCALL _lcd_out
(0043) s=dat&0x0f;
29B 2F46 MOV R20,R22
29C 704F ANDI R20,0xF
(0044) s<<=4;
29D 2F84 MOV R24,R20
29E 708F ANDI R24,0xF
29F 9582 SWAP R24
2A0 2F48 MOV R20,R24
(0045) lcd_out(s);
2A1 2F08 MOV R16,R24
2A2 DFDB RCALL _lcd_out
2A3 940C 0450 JMP pop_xgsetF000
_WR_control:
s --> R20
dat --> R22
2A5 940E 044B CALL push_xgsetF000
2A7 2F60 MOV R22,R16
(0046) }
(0047) //**************************************************************************
(0048) void WR_control(unsigned char dat)
(0049) {
(0050) unsigned char s;
(0051) s=dat&0xf0;
2A8 2F46 MOV R20,R22
2A9 7F40 ANDI R20,0xF0
(0052) lcd_out(0xf8);
2AA EF08 LDI R16,0xF8
2AB DFD2 RCALL _lcd_out
(0053) lcd_out(s);
2AC 2F04 MOV R16,R20
2AD DFD0 RCALL _lcd_out
(0054) s=dat&0x0f;
2AE 2F46 MOV R20,R22
2AF 704F ANDI R20,0xF
(0055) s<<=4;
2B0 2F84 MOV R24,R20
2B1 708F ANDI R24,0xF
2B2 9582 SWAP R24
2B3 2F48 MOV R20,R24
(0056) lcd_out(s);
2B4 2F08 MOV R16,R24
2B5 DFC8 RCALL _lcd_out
2B6 940C 0450 JMP pop_xgsetF000
(0057) }
(0058) //**************************************************************************
(0059) void lcd_control()
(0060) {
(0061) WR_control(0x30);
_lcd_control:
2B8 E300 LDI R16,0x30
2B9 DFEB RCALL _WR_control
(0062) WR_control(0x0c);
2BA E00C LDI R16,0xC
2BB DFE9 RCALL _WR_control
2BC 9508 RET
_lcd_clear:
i --> R20
2BD 934A ST R20,-Y
2BE 935A ST R21,-Y
(0063) }
(0064) //**************************************************************************
(0065) void lcd_clear()
(0066) {
(0067) int i;
(0068) WR_control(0x01);
2BF E001 LDI R16,1
2C0 DFE4 RCALL _WR_control
(0069) for(i=0;i<5000;i++) // 延时5ms
2C1 2744 CLR R20
2C2 2755 CLR R21
(0070) {
(0071) asm("nop");
2C3 0000 NOP
(0072) asm("nop");
2C4 0000 NOP
2C5 5F4F SUBI R20,0xFF
2C6 4F5F SBCI R21,0xFF
2C7 3848 CPI R20,0x88
2C8 E1E3 LDI R30,0x13
2C9 075E CPC R21,R30
2CA F3C4 BLT 0x02C3
2CB 9159 LD R21,Y+
2CC 9149 LD R20,Y+
2CD 9508 RET
_LCD_address:
address --> R20
y --> R22
x --> R10
2CE 940E 0455 CALL push_xgsetF00C
2D0 2F62 MOV R22,R18
2D1 2EA0 MOV R10,R16
(0073)
(0074) }
(0075) }
(0076) /*******************************************************/
(0077) /****** 函数名称: LCD_set_xy() ******/
(0078) /****** 功 能: 设置LCD显示坐标 ******/
(0079) /****** 参 数: 显示字符串的位置,X:0-15,Y:0-1*****/
(0080) /****** 返回值 : 无 ******/
(0081) /*******************************************************/
(0082) void LCD_address( unsigned char x, unsigned char y )
(0083) {
(0084) unsigned char address;
(0085) switch(x)
2D2 2D4A MOV R20,R10
2D3 2755 CLR R21
2D4 3040 CPI R20,0
2D5 0745 CPC R20,R21
2D6 F069 BEQ 0x02E4
2D7 3041 CPI R20,1
2D8 E0E0 LDI R30,0
2D9 075E CPC R21,R30
2DA F061 BEQ 0x02E7
2DB 3042 CPI R20,2
2DC E0E0 LDI R30,0
2DD 075E CPC R21,R30
2DE F059 BEQ 0x02EA
2DF 3043 CPI R20,3
2E0 E0E0 LDI R30,0
2E1 075E CPC R21,R30
2E2 F051 BEQ 0x02ED
2E3 C00C RJMP 0x02F0
(0086) {
(0087) case 0:
(0088) address = 0x80 + y+1; //计算显示地址
2E4 2F46 MOV R20,R22
2E5 574F SUBI R20,0x7F
(0089) break;
2E6 C00B RJMP 0x02F2
(0090) case 1:
(0091) address = 0x90 + y+1; //计算显示地址
2E7 2F46 MOV R20,R22
2E8 564F SUBI R20,0x6F
(0092) break;
2E9 C008 RJMP 0x02F2
(0093) case 2:
(0094) address = 0x88 + y+1; //计算显示地址
2EA 2F46 MOV R20,R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -