⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3_7210.lst

📁 你熟悉QT吗?Linux系统上领先的GUI
💻 LST
📖 第 1 页 / 共 5 页
字号:
    044C E021      LDI	R18,1
    044D 91000165  LDS	R16,_lcd_bkg_color
    044F DD53      RCALL	_LCD_write
(0355) 			LCD_write(lcd_bkg_color,1);	
    0450 E021      LDI	R18,1
    0451 91000165  LDS	R16,_lcd_bkg_color
    0453 DD4F      RCALL	_LCD_write
(0356) 			LCD_write(lcd_bkg_color,1);	
    0454 E021      LDI	R18,1
    0455 91000165  LDS	R16,_lcd_bkg_color
    0457 DD4B      RCALL	_LCD_write
(0357) 			LCD_write(lcd_bkg_color,1);	
    0458 E021      LDI	R18,1
    0459 91000165  LDS	R16,_lcd_bkg_color
    045B DD47      RCALL	_LCD_write
(0358) 			LCD_write(lcd_bkg_color,1);	
    045C E021      LDI	R18,1
    045D 91000165  LDS	R16,_lcd_bkg_color
    045F DD43      RCALL	_LCD_write
(0359) 			LCD_write(lcd_bkg_color,1);	
    0460 E021      LDI	R18,1
    0461 91000165  LDS	R16,_lcd_bkg_color
    0463 DD3F      RCALL	_LCD_write
(0360) 			LCD_write(lcd_bkg_color,1);	
    0464 E021      LDI	R18,1
    0465 91000165  LDS	R16,_lcd_bkg_color
    0467 DD3B      RCALL	_LCD_write
(0361) 			LCD_write(lcd_bkg_color,1);		
    0468 E021      LDI	R18,1
    0469 91000165  LDS	R16,_lcd_bkg_color
    046B DD37      RCALL	_LCD_write
(0362) 					  
(0363) 	 lcd_x=lcd_x+6;	                     //自动换下一个位置
    046C 91800163  LDS	R24,_lcd_x
    046E 5F8A      SUBI	R24,0xFA
    046F 93800163  STS	_lcd_x,R24
(0364) 	 if (lcd_x>128)
    0471 E880      LDI	R24,0x80
    0472 90200163  LDS	R2,_lcd_x
    0474 1582      CP	R24,R2
    0475 F440      BCC	0x047E
(0365) 	 	{
(0366) 		 lcd_x=0;
    0476 2422      CLR	R2
    0477 92200163  STS	_lcd_x,R2
(0367) 		 lcd_y=lcd_y+8;
    0479 91800162  LDS	R24,_lcd_y
    047B 5F88      SUBI	R24,0xF8
    047C 93800162  STS	_lcd_y,R24
(0368) 		}	
(0369) 	 if (lcd_y>128) lcd_y=0;
    047E E880      LDI	R24,0x80
    047F 90200162  LDS	R2,_lcd_y
    0481 1582      CP	R24,R2
    0482 F418      BCC	0x0486
    0483 2422      CLR	R2
    0484 92200162  STS	_lcd_y,R2
(0370) 	 set_lcd_cs;          //disable lcd	  	  
    0486 9AC3      SBI	0x18,3
(0371) 	 }
    0487 9623      ADIW	R28,3
    0488 940E05F5  CALL	pop_gset2
    048A 9508      RET
FILE: G:\mega8\atmega16\mp3_7210\main.c
(0001) #include <iom16v.h>
(0002) #define F_mmc_err    0
(0003) #define F_    1
(0004) 
(0005) #define led1_off      (PORTA|=(1<<6))
(0006) #define led1_on       (PORTA&=~(1<<6))
(0007) #define led2_off      (PORTA|=(1<<5))
(0008) #define led2_on       (PORTA&=~(1<<5))
(0009) #define set_lcd_cs    (PORTB|=(1<<3))
(0010) #define clr_lcd_cs    (PORTB&=~(1<<3))
(0011) 
(0012) unsigned int prog_flag=0; //bit0=mmc_err
(0013) 
(0014) const unsigned char Bmp002[]=
(0015) {
(0016) /*------------------------------------------------------------------------------
(0017)   源文件 / 文字 : windy 2004力作
(0018)   宽×高(像素): 84×16
(0019)   字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/168字节
(0020)   数据转换日期  : 2004-6-17 2:29:40
(0021) ------------------------------------------------------------------------------*/
(0022) 0x00,0x00,0x00,0xC0,0x00,0x00,0xC0,0x00,0x00,0xC0,0x00,0xC8,0x00,0xC0,0x80,0x40,
(0023) 0x40,0x80,0x00,0x80,0x40,0x40,0x40,0xF8,0x00,0xC0,0x00,0x00,0xC0,0x00,0x00,0x00,
(0024) 0x00,0x10,0x08,0x08,0x88,0x70,0x00,0xF0,0x08,0x08,0x08,0xF0,0x00,0xF0,0x08,0x08,
(0025) 0x08,0xF0,0x00,0x00,0xC0,0x30,0xF8,0x00,0x00,0x20,0x20,0x20,0x20,0xFC,0x20,0x20,
(0026) 0x20,0xF0,0x20,0x00,0x40,0x20,0xF0,0x4C,0x20,0x10,0xFC,0x90,0x90,0x90,0x10,0x00,
(0027) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x00,0x03,0x0C,0x03,0x00,0x0F,
(0028) 0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x07,0x08,0x08,0x08,0x0F,0x20,0x23,0x1C,0x04,
(0029) 0x03,0x00,0x00,0x00,0x00,0x0C,0x0A,0x09,0x08,0x08,0x00,0x07,0x08,0x08,0x08,0x07,
(0030) 0x00,0x07,0x08,0x08,0x08,0x07,0x00,0x03,0x02,0x02,0x0F,0x02,0x10,0x10,0x08,0x04,
(0031) 0x03,0x00,0x10,0x10,0x10,0x0F,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x04,
(0032) 0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00
(0033) };
(0034) 
(0035) /*unsigned char  Bmp001[]=
(0036) {
(0037) /*------------------------------------------------------------------------------
(0038)   源文件 / 文字 : mp3播放器         
(0039)   宽×高(像素): 84×13
(0040)   字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/168字节
(0041)   数据转换日期  : 2004-6-17 2:26:38
(0042) ------------------------------------------------------------------------------
(0043) 0x00,0x00,0x00,0xE0,0x20,0x20,0xC0,0x20,0x20,0xC0,0x00,0xE0,0x20,0x20,0x20,0xC0,
(0044) 0x00,0x08,0x04,0x44,0x44,0xB8,0x08,0x88,0xFE,0x88,0xD4,0xBC,0x94,0xFE,0xB2,0xDA,
(0045) 0x90,0x00,0x08,0xF8,0x2A,0x2C,0xE8,0x08,0x30,0xCE,0x08,0xF8,0x08,0x00,0x40,0x5E,
(0046) 0x52,0xD2,0x5E,0x60,0x5E,0x52,0xF2,0x5E,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0047) 0x00,0x00,0xFC,0x02,0x01,0x02,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0048) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x1F,
(0049) 0x04,0x04,0x04,0x03,0x00,0x02,0x04,0x04,0x04,0x03,0x09,0x08,0x0F,0x00,0x0F,0x0A,
(0050) 0x0A,0x0F,0x0A,0x0F,0x00,0x00,0x0C,0x03,0x04,0x04,0x07,0x08,0x04,0x02,0x03,0x04,
(0051) 0x08,0x00,0x01,0x0F,0x09,0x09,0x0F,0x00,0x0F,0x09,0x09,0x0F,0x01,0x00,0x00,0x00,
(0052) 0x00,0x00,0x00,0x0F,0x01,0x0F,0x01,0x06,0x08,0x06,0x01,0x0F,0x01,0x0F,0x00,0x00,
(0053) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
(0054) };
(0055) 
(0056) unsigned char Bmp003[]=
(0057) {
(0058) /*------------------------------------------------------------------------------
(0059)   源文件 / 文字 : 来自剪贴板!www.smart-io.com
(0060)   宽×高(像素): 84×16
(0061)   字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/168字节
(0062)   数据转换日期  : 2004-6-17 2:37:01
(0063) ------------------------------------------------------------------------------
(0064) 0xE0,0x00,0x80,0x60,0x80,0x00,0xE0,0x00,0xE0,0x00,0x80,0x60,0x80,0x00,0xE0,0x00,
(0065) 0xE0,0x00,0x80,0x60,0x80,0x00,0xE0,0x00,0x00,0x00,0x40,0xA0,0x20,0x40,0x00,0xE0,
(0066) 0x20,0x20,0xC0,0x20,0x20,0xC0,0x00,0x00,0xA0,0xA0,0xA0,0xC0,0x00,0xE0,0x20,0x00,
(0067) 0xF8,0x20,0x00,0x80,0x80,0x00,0xE4,0x00,0xC0,0x20,0x20,0x20,0xC0,0x00,0x00,0x00,
(0068) 0xC0,0x20,0x20,0x20,0x40,0x00,0xC0,0x20,0x20,0x20,0xC0,0x00,0xE0,0x20,0x20,0xC0,
(0069) 0x20,0x20,0xC0,0x00,0x21,0x26,0x21,0x20,0x21,0x26,0x21,0x20,0x21,0x26,0x21,0x20,
(0070) 0x21,0x26,0x21,0x20,0x21,0x26,0x21,0x20,0x21,0x26,0x21,0x20,0x24,0x20,0x22,0x24,
(0071) 0x25,0x22,0x20,0x27,0x20,0x20,0x27,0x20,0x20,0x27,0x20,0x23,0x24,0x24,0x24,0x27,
(0072) 0x20,0x27,0x20,0x20,0x23,0x24,0x20,0x20,0x20,0x20,0x27,0x20,0x23,0x24,0x24,0x24,
(0073) 0x23,0x20,0x24,0x20,0x23,0x24,0x24,0x24,0x22,0x20,0x23,0x24,0x24,0x24,0x23,0x20,
(0074) 0x27,0x20,0x20,0x27,0x20,0x20,0x27,0x00
(0075) };*/
(0076) 
(0077) 
(0078) extern void port_init(void);
(0079) extern void MMC_reset(void);
(0080) extern void MMC_name(void);
(0081) extern unsigned char MMC_check(void);
(0082) 
(0083) extern void SPI_masterinit(void);
(0084) 
(0085) extern void lcd_init(void);
(0086) extern void lcd_clr(void); 
(0087) extern void LCD_write(unsigned char data,unsigned char dc); 
(0088) extern void delay_ms(unsigned int time);	  
(0089) 
(0090) 
(0091) 
(0092) //extern unsigned char usb_read(void);
(0093) 
(0094) 
(0095) 
(0096) /***********MAIN******************/ 
(0097) void main()
(0098)     {
(0099)      unsigned int F_mode;//工作模式
(0100) 	 unsigned char count;
(0101) 	 unsigned int lcd_add;	  
(0102) 
(0103)      delay_ms(100);	 
_main:
  lcd_add              --> Y+1
  F_mode               --> Y+1
  count                --> R20
    048B E604      LDI	R16,0x64
    048C E010      LDI	R17,0
    048D 940E05E6  CALL	_delay_ms
(0104) 	 port_init();
    048F 940E05B7  CALL	_port_init
(0105)      lcd_init();
    0491 940E01EA  CALL	_lcd_init
(0106)      lcd_clr();  
    0493 940E0292  CALL	_lcd_clr
(0107) 	 set_lcd_cs;
    0495 9AC3      SBI	0x18,3
(0108)      delay_ms(10000);
    0496 E100      LDI	R16,0x10
    0497 E217      LDI	R17,0x27
    0498 940E05E6  CALL	_delay_ms
(0109) 	 	 
(0110) //	 SPI_masterinit();	  
(0111) 	 led1_off;	 
    049A 9ADE      SBI	0x1B,6
(0112) 	 led2_off;	
    049B 9ADD      SBI	0x1B,5
(0113)      delay_ms(10000);
    049C E100      LDI	R16,0x10
    049D E217      LDI	R17,0x27
    049E 940E05E6  CALL	_delay_ms
(0114) 	 		 
(0115) //	 MMC_reset();
(0116) 	 
(0117) //     MMC_name();
(0118) //	 MMC_check();
(0119) 	 
(0120) 
(0121) 	 for (;;)
(0122)          {		  	 	
(0123) 	 	 for (count=0;count<36;count++)
    04A0 2744      CLR	R20
    04A1 C009      RJMP	0x04AB
(0124)          	 {			 	
(0125) 	 	 	  lcd_ascii_5_7(count);					  
    04A2 2F04      MOV	R16,R20
    04A3 2711      CLR	R17
    04A4 940E03B4  CALL	_lcd_ascii_5_7
(0126) 		      delay_ms(1500);			  
    04A6 ED0C      LDI	R16,0xDC
    04A7 E015      LDI	R17,5
    04A8 940E05E6  CALL	_delay_ms
    04AA 9543      INC	R20
    04AB 3244      CPI	R20,0x24
    04AC F3A8      BCS	0x04A2
    04AD CFF2      RJMP	0x04A0
    04AE 9508      RET
FILE: G:\mega8\atmega16\mp3_7210\mmc.c
(0001) #include <iom16v.h>
(0002) 
(0003) // MMC commands
(0004) #define MMC_GO_IDLE_STATE		0
(0005) #define MMC_SEND_OP_COND		1
(0006) #define MMC_SEND_CSD			9
(0007) #define MMC_SEND_CID			10
(0008) #define MMC_SEND_STATUS			13
(0009) #define MMC_SET_BLOCKLEN		16
(0010) #define MMC_READ_SINGLE_BLOCK		17
(0011) #define MMC_WRITE_BLOCK			24
(0012) #define MMC_PROGRAM_CSD			27
(0013) #define MMC_SET_WRITE_PROT		28
(0014) #define MMC_CLR_WRITE_PROT		29
(0015) #define MMC_SEND_WRITE_PROT		30
(0016) #define MMC_TAG_SECTOR_START		32
(0017) #define MMC_TAG_SECTOR_END		33
(0018) #define MMC_UNTAG_SECTOR		34
(0019) #define MMC_TAG_ERASE_GROUP_START 	35
(0020) #define MMC_TAG_ERARE_GROUP_END		36
(0021) #define MMC_UNTAG_ERASE_GROUP		37
(0022) #define MMC_ERASE			38
(0023) #define MMC_CRC_ON_OFF			59
(0024) 
(0025) #define R1_BUSY				128
(0026) #define R1_PARAMETER			 64
(0027) #define R1_ADDRESS			 32
(0028) #define R1_ERASE_SEQ			 16
(0029) #define R1_COM_CRC			  8
(0030) #define R1_ILLEGAL_COM			  4
(0031) #define R1_ERASE_RESET		  	  2
(0032) #define R1_IDLE_STATE		  	  1
(0033) 
(0034) #define led1_off      (PORTA|=(1<<6))
(0035) #define led1_on       (PORTA&=~(1<<6))
(0036) #define led2_off      (PORTA|=(1<<5))
(0037) #define led2_on       (PORTA&=~(1<<5))
(0038) 
(0039) #define disable_mmc_cs	(PORTB|=(1<<0))
(0040) #define enable_mmc_cs	(PORTB&=~(1<<0))
(0041) 
(0042) 
(0043) 
(0044) unsigned char  ram_data[512];
(0045) 
(0046) 
(0047) 
(0048) extern void LCD_write(unsigned char data,unsigned char dc); 
(0049) 
(0050) /***********SPI初始化******************/
(0051) void SPI_masterinit(void) 
(0052)      {
(0053)                             //不中断 允许    主模式            fck/4	 
(0054)       SPCR=0b01010000;	      //SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
_SPI_masterinit:
    04AF E580      LDI	R24,0x50
    04B0 B98D      OUT	0x0D,R24
(0055) 
(0056) 	 }
    04B1 9508      RET
(0057) 	
(0058) /***********SPI读取/写入****基础SPI传送命令******/
(0059) unsigned char SPI_tx_rx(unsigned char spi_data);
(0060) unsigned char SPI_tx_rx(unsigned char spi_data) 
(0061)      {
(0062) 	 SPDR=spi_data;
_SPI_tx_rx:
  spi_data             --> R16
    04B2 B90F      OUT	0x0F,R16
(0063) 	 while (!(SPSR&0x80));
    04B3 9B77      SBIS	0x0E,7
    04B4 CFFE      RJMP	0x04B3
(0064) 	 return SPDR;
    04B5 B10F      IN	R16,0x0F
    04B6 9508      RET
_MMC_sendCmd:
  temp                 --> R20
  A7_0                 --> Y+8
  A15_8                --> Y+6
  A23_16               --> Y+4
  A31_24               --> R20
  cmd                  --> R22
    04B7 940E0615  CALL	push_gset2
    04B9 2F42      MOV	R20,R18
    04BA 2F60      MOV	R22,R16
(0065) 	 }
(0066) /***********MMC_sendCmd();*****基础传送命令*******/
(0067) unsigned char MMC_sendCmd(unsigned char cmd,unsigned char A31_24,unsigned char A23_16,unsigned char A15_8,unsigned char A7_0);
(0068) unsigned char MMC_sendCmd(unsigned char cmd,unsigned char A31_24,unsigned char A23_16,unsigned char A15_8,unsigned char A7_0)
(0069)      {
(0070) 	 signed char temp;
(0071) 	 enable_mmc_cs;
    04BB 98C0      CBI	0x18,0
(0072) 
(0073) 	 SPI_tx_rx(cmd|0x40);       //cmd"01xxxxxx"
    04BC 2F06      MOV	R16,R22
    04BD 6400      ORI	R16,0x40
    04BE DFF3      RCALL	_SPI_tx_rx
(0074) 	 SPI_tx_rx(A31_24);
    04BF 2F04      MOV	R16,R20
    04C0 DFF1      RCALL	_SPI_tx_rx
(0075) 	 SPI_tx_rx(A23_16);
    04C1 810C      LDD	R16,Y+4
    04C2 DFEF      RCALL	_SPI_tx_rx
(0076) 	 SPI_tx_rx(A15_8);
    04C3 810E      LDD	R16,Y+6
    04C4 DFED      RCALL	_SPI_tx_rx
(0077) 	 SPI_tx_rx(A7_0);
    04C5 8508      LDD	R16,Y+8
    04C6 DFEB      RCALL	_SPI_tx_rx
(0078) 	 SPI_tx_rx(0x95);          //crc for cmd0
    04C7 E905      LDI	R16,0x95
    04C8 DFE9      RCALL	_SPI_tx_rx
(0079) 
(0080) 	 SPI_tx_rx(0xff);         //one empty cycle
    04C9 EF0F      LDI	R16,0xFF
    04CA DFE7      RCALL	_SPI_tx_rx
(0081)  
(0082) 	 temp=SPI_tx_rx(0xff);    //0=busy 
    04CB EF0F      LDI	R16,0xFF
    04CC DFE5      RCALL	_SPI_tx_rx
    04CD 2F40      MOV	R20,R16
(0083) //LCD_write(temp,1);  //test point
(0084) 	 if ((temp-0x80)>=0)         //0b1xxxxxxx=err
    04CE 2F84      MOV	R24,R20
    04CF 5880      SUBI	R24,0x80
    04D0 3080      CPI	R24,0
    04D1 F034      BLT	0x04D8
(0085) 	 	   {
(0086) 		   temp=0xff;
    04D2 EF4F      LDI	R20,0xFF
(0087) 		   while (SPI_tx_rx(0xff)==0);  
    04D3 EF0F      LDI	R16,0xFF
    04D4 DFDD      RCALL	_SPI_tx_rx
    04D5 2300      TST	R16
    04D6 F3E1      BEQ	0x04D3
(0088) //		   led1_on;  //test point
(0089) 		   }
    04D7 C00E      RJMP	0x04E6
(0090) 	 else 
(0091) 	 	  if (cmd==MMC_SEND_STATUS)    //如果是读状态命令
    04D8 306D      CPI	R22,0xD
    04D9 F441      BNE	0x04E2
(0092) 	 	  	  {
(0093) 		  	  temp=SPI_tx_rx(0xff);       //read STATUS
    04DA EF0F      LDI	R16,0xFF
    04DB DFD6      RCALL	_SPI_tx_rx
    04DC 2F40      MOV	R20,R16
(0094) 		 	  while (SPI_tx_rx(0xff)==0);  
    04DD EF0F      LDI	R16,0xFF
    04DE DFD3      RCALL	_SPI_tx_rx

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -