📄 mp3_7210.lst
字号:
__start:
__text_start:
0159 E5CF LDI R28,0x5F
015A E0D4 LDI R29,4
015B BFCD OUT 0x3D,R28
015C BFDE OUT 0x3E,R29
015D 51C0 SUBI R28,0x10
015E 40D0 SBCI R29,0
015F EA0A LDI R16,0xAA
0160 8308 STD Y+0,R16
0161 2400 CLR R0
0162 E6E2 LDI R30,0x62
0163 E0F1 LDI R31,1
0164 E013 LDI R17,3
0165 36E6 CPI R30,0x66
0166 07F1 CPC R31,R17
0167 F011 BEQ 0x016A
0168 9201 ST R0,Z+
0169 CFFB RJMP 0x0165
016A 8300 STD Z+0,R16
016B EBE0 LDI R30,0xB0
016C E0F1 LDI R31,1
016D E6A0 LDI R26,0x60
016E E0B0 LDI R27,0
016F E012 LDI R17,2
0170 3BE2 CPI R30,0xB2
0171 07F1 CPC R31,R17
0172 F021 BEQ 0x0177
0173 95C8 LPM
0174 9631 ADIW R30,1
0175 920D ST R0,X+
0176 CFF9 RJMP 0x0170
0177 940E048B CALL _main
_exit:
0179 CFFF RJMP _exit
FILE: G:\mega8\atmega16\mp3_7210\usb_F245.c
(0001) #include <iom16v.h>
(0002)
(0003) #define led1_off (PORTA|=(1<<4))
(0004) #define led1_on (PORTA&=~(1<<4))
(0005)
(0006) #define usb_txrdy ((PINC&0x04)>>2)
(0007) #define usb_rxrdy ((PINC&0x08)>>3)
(0008) #define set_usb_read (PORTC|=(1<<0))
(0009) #define clr_usb_read (PORTC&=~(1<<0))
(0010) #define set_usb_write (PORTC|=(1<<1))
(0011) #define clr_usb_write (PORTC&=~(1<<1))
(0012)
(0013)
(0014) /***********USB_FT245读数据******************/
(0015) unsigned char usb_read(void)
(0016) {
_usb_read:
usb_data --> R16
017A C001 RJMP 0x017C
(0017) unsigned char usb_data;
(0018) while (usb_rxrdy)
(0019) {
(0020) led1_on; /*空则循环*/
017B 98DC CBI 0x1B,4
017C B383 IN R24,0x13
017D 7088 ANDI R24,0x8
017E 9586 LSR R24
017F 9586 LSR R24
0180 9586 LSR R24
0181 2388 TST R24
0182 F7C1 BNE 0x017B
(0021) }
(0022) led1_off;
0183 9ADC SBI 0x1B,4
(0023) clr_usb_read;
0184 98A8 CBI 0x15,0
(0024) set_usb_read;
0185 9AA8 SBI 0x15,0
(0025) usb_data=PIND;
0186 B300 IN R16,0x10
(0026) return (usb_data);
0187 9508 RET
_usb_write:
usb_data --> R20
0188 940E05FE CALL push_gset1
018A 2F40 MOV R20,R16
(0027) }
(0028) /***********USB_FT245写数据******************/
(0029) void usb_write(unsigned char usb_data);
(0030) void usb_write(unsigned char usb_data)
(0031) {
018B C005 RJMP 0x0191
(0032) while (usb_txrdy)
(0033) {
(0034) led1_on; /*忙则循环*/
018C 98DC CBI 0x1B,4
(0035) delay_ms(1000);
018D EE08 LDI R16,0xE8
018E E013 LDI R17,3
018F 940E05E6 CALL _delay_ms
0191 B383 IN R24,0x13
0192 7084 ANDI R24,4
0193 9586 LSR R24
0194 9586 LSR R24
0195 2388 TST R24
0196 F7A9 BNE 0x018C
(0036) }
(0037) led1_off;
0197 9ADC SBI 0x1B,4
(0038) DDRD =0b11111111; /*1=output */
0198 EF8F LDI R24,0xFF
0199 BB81 OUT 0x11,R24
(0039) PORTD=usb_data;
019A BB42 OUT 0x12,R20
(0040) set_usb_write;
019B 9AA9 SBI 0x15,1
(0041) clr_usb_write;
019C 98A9 CBI 0x15,1
(0042) DDRD =0b00000000; /*0=input */
019D 2422 CLR R2
019E BA21 OUT 0x11,R2
(0043) PORTD=0b00000000; /*三态高阻*/
019F BA22 OUT 0x12,R2
(0044) }
01A0 940E0601 CALL pop_gset1
01A2 9508 RET
_LCD_write:
temp --> R20
dc --> R18
data --> R16
01A3 940E05FE CALL push_gset1
FILE: G:\mega8\atmega16\mp3_7210\lcd6610.c
(0001)
(0002) #include<iom16v.h>
(0003)
(0004) #define set_lcd_data (PORTB|=(1<<5))
(0005) #define clr_lcd_data (PORTB&=~(1<<5))
(0006) #define set_lcd_clk (PORTB|=(1<<7))
(0007) #define clr_lcd_clk (PORTB&=~(1<<7))
(0008) #define set_lcd_cs (PORTB|=(1<<3))
(0009) #define clr_lcd_cs (PORTB&=~(1<<3))
(0010) #define set_lcd_reset (PORTB|=(1<<4))
(0011) #define clr_lcd_reset (PORTB&=~(1<<4))
(0012)
(0013)
(0014) #define LCD_CMD_SWRESET 0x01
(0015) #define LCD_CMD_SLEEPOUT 0x11
(0016) #define LCD_CMD_DISPON 0x29
(0017) #define LCD_CMD_BSTRON 0x03
(0018) #define LCD_CMD_MADCTL 0x36
(0019) /*next is a data byte*/
(0020) #define MADCTL_HORIZ 0x48
(0021) #define LCD_CMD_COLMOD 0x3A
(0022) /*第8步是02,256色*/
(0023) #define LCD_CMD_INVON 0x21
(0024) #define LCD_CMD_RGBSET 0x2D
(0025) #define LCD_CMD_SETCON 0x25
(0026)
(0027) #define LCD_CMD_SLEEPIN 0x10
(0028) #define LCD_CMD_CASET 0x2A
(0029) #define LCD_CMD_PASET 0x2B
(0030) #define LCD_CMD_RAMWR 0x2C
(0031) #define MADCTL_VERT 0x68
(0032)
(0033)
(0034) unsigned char Bmp004[]=
(0035) {
(0036) /*------------------------------------------------------------------------------
(0037) 源文件 / 文字 : www.smart-io.com
(0038) 宽×高(像素): 128×16
(0039) 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/256字节
(0040) 数据转换日期 : 2004-5-27 2:04:32
(0041) ------------------------------------------------------------------------------*/
(0042) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0043) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0044) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0045) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,
(0046) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,
(0047) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0048) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0049) 0xEB,0xEB,0xEB,0x00,0x7C,0x7F,0x3C,0x77,0x3E,0x00,0x0E,0x3C,0x00,0x38,0x3C,0x7F,
(0050) 0x49,0x49,0x49,0x00,0x42,0x92,0x42,0x4C,0x08,0xFE,0x08,0x42,0x00,0x44,0x42,0x92,
(0051) 0x49,0x49,0x49,0x00,0x02,0x92,0x78,0x04,0x08,0x00,0x08,0x42,0x00,0x02,0x42,0x92,
(0052) 0x55,0x55,0x55,0x00,0x3C,0x92,0x44,0x04,0x08,0x00,0x08,0x42,0x00,0x02,0x42,0x92,
(0053) 0x55,0x55,0x55,0x00,0x40,0x92,0x42,0x04,0x08,0x00,0x08,0x42,0x00,0x02,0x42,0x92,
(0054) 0x22,0x22,0x22,0x06,0x42,0x92,0x42,0x04,0x08,0x00,0x08,0x42,0x06,0x44,0x42,0x92,
(0055) 0x22,0x22,0x22,0x06,0x3E,0xB7,0xFC,0x1F,0x30,0x00,0x3E,0x3C,0x06,0x38,0x3C,0xB7,
(0056) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0057) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
(0058) };
(0059)
(0060) const unsigned char Bmp_ascii[]=
(0061) {
(0062) /*------------------------------------------------------------------------------
(0063) 源文件 / 文字 : a ~Z
(0064) 宽×高(像素): 5*7
(0065) 字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/44字节
(0066) 数据转换日期 : 2004-7-31 2:36:43
(0067) ------------------------------------------------------------------------------*/
(0068) 0x7E,0x81,0x81,0x81,0x7E,
(0069) 0x00,0x82,0xFF,0x80,0x00,
(0070) 0xC6,0xA1,0x91,0x89,0x86,
(0071) 0x42,0x81,0x89,0x89,0x76,
(0072) 0x30,0x2C,0x22,0xFF,0x20,
(0073) 0x4F,0x89,0x89,0x89,0x71,
(0074) 0x7E,0x89,0x89,0x89,0x72,
(0075) 0x03,0x01,0xF9,0x07,0x01,
(0076) 0x76,0x89,0x89,0x89,0x76,
(0077) 0x4E,0x91,0x91,0x91,0x7E,
(0078)
(0079) 0x28,0x54,0x54,0x78,0x40,
(0080) 0x01,0x7F,0x48,0x48,0x30,
(0081) 0x38,0x44,0x44,0x4C,0x00,
(0082) 0x30,0x48,0x49,0x7F,0x40,
(0083) 0x38,0x54,0x54,0x58,0x00,
(0084) 0x48,0x7E,0x49,0x49,0x01,
(0085) 0x3A,0x55,0x55,0x53,0x21,
(0086) 0x41,0x7F,0x08,0x48,0x70,
(0087) 0x00,0x44,0x7D,0x40,0x00,
(0088) 0x40,0x44,0x44,0x3D,0x00,
(0089) 0x41,0x7F,0x10,0x68,0x4C,
(0090) 0x00,0x41,0x7F,0x40,0x00,
(0091) 0x7C,0x04,0x7C,0x04,0x78,
(0092) 0x7C,0x04,0x04,0x78,0x00,
(0093) 0x00,0x38,0x44,0x44,0x38,
(0094) 0x42,0x7E,0x52,0x12,0x0C,
(0095) 0x0C,0x12,0x52,0x7E,0x42,
(0096) 0x44,0x7C,0x48,0x04,0x04,
(0097) 0x4C,0x54,0x54,0x64,0x00,
(0098) 0x04,0x3F,0x44,0x40,0x00,
(0099) 0x3C,0x40,0x40,0x7C,0x40,
(0100) 0x0C,0x30,0x60,0x30,0x0C,
(0101) 0x0C,0x70,0x1C,0x70,0x0C,
(0102) 0x44,0x6C,0x10,0x6C,0x44,
(0103) 0x02,0x4E,0x50,0x70,0x0E,
(0104) 0x00,0x64,0x54,0x4C,0x44
(0105) };
(0106)
(0107)
(0108) void LCD_write(unsigned char data,unsigned char dc);
(0109) void LCD_contrast(unsigned char data);
(0110) void lcd_ascii(char *s,unsigned char len);
(0111) void lcd_color(unsigned char bkg,unsigned char text);
(0112) void lcd_window(unsigned char xp,unsigned char yp,unsigned char xe,unsigned char ye);
(0113) void lcd_gotoxy(unsigned char x, unsigned char y);
(0114) void lcd_bar(unsigned char len,unsigned char val,unsigned char bkgcol,unsigned char fillcol);
(0115) unsigned char lcd_bkg_color;
(0116) unsigned char lcd_text_color;
(0117) unsigned char lcd_x;
(0118) unsigned char lcd_y;
(0119)
(0120)
(0121)
(0122) /***********LCD WRITE******************/
(0123) /**********基础程序直接调用即可*********/
(0124) void LCD_write(unsigned char data,unsigned char dc)
(0125) {
(0126) unsigned char temp;
(0127)
(0128) temp=0;
01A5 2744 CLR R20
(0129) clr_lcd_data;
01A6 98C5 CBI 0x18,5
(0130) clr_lcd_clk;
01A7 98C7 CBI 0x18,7
(0131)
(0132) if (dc) set_lcd_data; /*dc=0 instrution*/
01A8 2322 TST R18
01A9 F011 BEQ 0x01AC
01AA 9AC5 SBI 0x18,5
01AB C001 RJMP 0x01AD
(0133) else clr_lcd_data;
01AC 98C5 CBI 0x18,5
(0134) set_lcd_clk;
01AD 9AC7 SBI 0x18,7
(0135) clr_lcd_clk;
01AE 98C7 CBI 0x18,7
(0136) if (data&0x80) set_lcd_data; //high 4 bit
01AF FF07 SBRS R16,7
01B0 C002 RJMP 0x01B3
01B1 9AC5 SBI 0x18,5
01B2 C001 RJMP 0x01B4
(0137) else clr_lcd_data;
01B3 98C5 CBI 0x18,5
(0138) set_lcd_clk;
01B4 9AC7 SBI 0x18,7
(0139) clr_lcd_clk;
01B5 98C7 CBI 0x18,7
(0140) if (data&0x40) set_lcd_data;
01B6 FF06 SBRS R16,6
01B7 C002 RJMP 0x01BA
01B8 9AC5 SBI 0x18,5
01B9 C001 RJMP 0x01BB
(0141) else clr_lcd_data;
01BA 98C5 CBI 0x18,5
(0142) set_lcd_clk;
01BB 9AC7 SBI 0x18,7
(0143) clr_lcd_clk;
01BC 98C7 CBI 0x18,7
(0144) if (data&0x20) set_lcd_data;
01BD FF05 SBRS R16,5
01BE C002 RJMP 0x01C1
01BF 9AC5 SBI 0x18,5
01C0 C001 RJMP 0x01C2
(0145) else clr_lcd_data;
01C1 98C5 CBI 0x18,5
(0146) set_lcd_clk;
01C2 9AC7 SBI 0x18,7
(0147) clr_lcd_clk;
01C3 98C7 CBI 0x18,7
(0148) if (data&0x10) set_lcd_data;
01C4 FF04 SBRS R16,4
01C5 C002 RJMP 0x01C8
01C6 9AC5 SBI 0x18,5
01C7 C001 RJMP 0x01C9
(0149) else clr_lcd_data;
01C8 98C5 CBI 0x18,5
(0150) set_lcd_clk;
01C9 9AC7 SBI 0x18,7
(0151) clr_lcd_clk;
01CA 98C7 CBI 0x18,7
(0152) if (data&0x08) set_lcd_data;//low 4 bit
01CB FF03 SBRS R16,3
01CC C002 RJMP 0x01CF
01CD 9AC5 SBI 0x18,5
01CE C001 RJMP 0x01D0
(0153) else clr_lcd_data;
01CF 98C5 CBI 0x18,5
(0154) set_lcd_clk;
01D0 9AC7 SBI 0x18,7
(0155) clr_lcd_clk;
01D1 98C7 CBI 0x18,7
(0156) if (data&0x04) set_lcd_data;
01D2 FF02 SBRS R16,2
01D3 C002 RJMP 0x01D6
01D4 9AC5 SBI 0x18,5
01D5 C001 RJMP 0x01D7
(0157) else clr_lcd_data;
01D6 98C5 CBI 0x18,5
(0158) set_lcd_clk;
01D7 9AC7 SBI 0x18,7
(0159) clr_lcd_clk;
01D8 98C7 CBI 0x18,7
(0160) if (data&0x02) set_lcd_data;
01D9 FF01 SBRS R16,1
01DA C002 RJMP 0x01DD
01DB 9AC5 SBI 0x18,5
01DC C001 RJMP 0x01DE
(0161) else clr_lcd_data;
01DD 98C5 CBI 0x18,5
(0162) set_lcd_clk;
01DE 9AC7 SBI 0x18,7
(0163) clr_lcd_clk;
01DF 98C7 CBI 0x18,7
(0164) if (data&0x01) set_lcd_data;
01E0 FF00 SBRS R16,0
01E1 C002 RJMP 0x01E4
01E2 9AC5 SBI 0x18,5
01E3 C001 RJMP 0x01E5
(0165) else clr_lcd_data;
01E4 98C5 CBI 0x18,5
(0166) set_lcd_clk;
01E5 9AC7 SBI 0x18,7
(0167) clr_lcd_clk;
01E6 98C7 CBI 0x18,7
(0168) }
01E7 940E0601 CALL pop_gset1
01E9 9508 RET
(0169) /***********液晶初始化******************/
(0170) /**********基础程序直接调用即可*********/
(0171) /*****************************/
(0172) void lcd_init(void)
(0173) {
(0174) clr_lcd_cs; //enable lcd
_lcd_init:
01EA 98C3 CBI 0x18,3
(0175) clr_lcd_reset;
01EB 98C4 CBI 0x18,4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -