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

📄 erpfg.lst

📁 用于ATMEGA8单片机调试 包括串口
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
      86 EFCF      LDI	R28,0xFF
      87 E2D1      LDI	R29,0x21
      88 BFCD      OUT	0x3D,R28
      89 BFDE      OUT	0x3E,R29
      8A 51CE      SUBI	R28,0x1E
      8B 40D0      SBCI	R29,0
      8C EA0A      LDI	R16,0xAA
      8D 8308      STD	Y+0,R16
      8E 2400      CLR	R0
      8F E0E0      LDI	R30,0
      90 E0F2      LDI	R31,2
      91 E012      LDI	R17,2
      92 30E0      CPI	R30,0
      93 07F1      CPC	R31,R17
      94 F011      BEQ	0x0097
      95 9201      ST	R0,Z+
      96 CFFB      RJMP	0x0092
      97 8300      STD	Z+0,R16
      98 E0EC      LDI	R30,0xC
      99 E0F1      LDI	R31,1
      9A E0A0      LDI	R26,0
      9B E0B2      LDI	R27,2
      9C E011      LDI	R17,1
      9D E000      LDI	R16,0
      9E BF0B      OUT	0x3B,R16
      9F 30EC      CPI	R30,0xC
      A0 07F1      CPC	R31,R17
      A1 F021      BEQ	0x00A6
      A2 95C8      LPM
      A3 9631      ADIW	R30,1
      A4 920D      ST	R0,X+
      A5 CFF9      RJMP	0x009F
      A6 940E 00CA CALL	_main
_exit:
      A8 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\新建文件夹\main.c
(0001) #include "config.h"                                                                        
(0002) /*******************************************************************************/
(0003) void DELAY(unsigned int num)
(0004) {
(0005)    WDR();
_DELAY:
  num                  --> R16
      A9 95A8      WDR
(0006)    while(num--);
      AA 0118      MOVW	R2,R16
      AB 5001      SUBI	R16,1
      AC 4010      SBCI	R17,0
      AD 2022      TST	R2
      AE F7D9      BNE	0x00AA
      AF 2033      TST	R3
      B0 F7C9      BNE	0x00AA
(0007)    WDR();
      B1 95A8      WDR
      B2 9508      RET
_Delay1ms:
  j                    --> R20
  a                    --> R22
  t                    --> R16
      B3 940E 0258 CALL	push_xgsetF000
(0008) }
(0009) /*******************************************************************************/
(0010) /*******************************************************************************/
(0011) void Delay1ms(unsigned int t)//延时子程序,延时 1MS*t S
(0012) {
(0013) unsigned int a,j;
(0014) for(j=0;j<t;j++)
      B5 2744      CLR	R20
      B6 2755      CLR	R21
      B7 C00C      RJMP	0x00C4
(0015)  {
(0016)   WDR();
      B8 95A8      WDR
(0017)   for(a = 0; a < 125; a++)
      B9 2766      CLR	R22
      BA 2777      CLR	R23
      BB C002      RJMP	0x00BE
      BC 5F6F      SUBI	R22,0xFF
      BD 4F7F      SBCI	R23,0xFF
      BE 376D      CPI	R22,0x7D
      BF E0E0      LDI	R30,0
      C0 077E      CPC	R23,R30
      C1 F3D0      BCS	0x00BC
      C2 5F4F      SUBI	R20,0xFF
      C3 4F5F      SBCI	R21,0xFF
      C4 1740      CP	R20,R16
      C5 0751      CPC	R21,R17
      C6 F388      BCS	0x00B8
(0018)   {;}
(0019)  }
(0020)  WDR();
      C7 95A8      WDR
      C8 940C 025D JMP	pop_xgsetF000
_main:
  logS                 --> Y,+0
      CA 972B      SBIW	R28,0xB
(0021) }
(0022) void main(void)
(0023) {   
(0024)    
(0025) 	uint8 logS[]={" 欢迎使用 "};
      CB EE84      LDI	R24,0xE4
      CC E090      LDI	R25,0
      CD 01FE      MOVW	R30,R28
      CE E00B      LDI	R16,0xB
      CF E010      LDI	R17,0
      D0 93FA      ST	R31,-Y
      D1 93EA      ST	R30,-Y
      D2 939A      ST	R25,-Y
      D3 938A      ST	R24,-Y
      D4 940E 0262 CALL	asgncblk
      D6 C005      RJMP	0x00DC
(0026) 	while(1)
(0027) 	{
(0028) 	DISPLAY_LCD(0X85,logS);
      D7 019E      MOVW	R18,R28
      D8 E805      LDI	R16,0x85
      D9 E010      LDI	R17,0
      DA 940E 0140 CALL	_DISPLAY_LCD
      DC CFFA      RJMP	0x00D7
      DD 962B      ADIW	R28,0xB
      DE 9508      RET
FILE: C:\DOCUME~1\Administrator\桌面\新建文件夹\lcd.c
(0001) #include "config.h"
(0002) 
(0003) void LCD_WIRTE_DELAY(unsigned int lcd_time) 
(0004) {
(0005) WDR();
_LCD_WIRTE_DELAY:
  lcd_time             --> R16
      DF 95A8      WDR
(0006) while(--lcd_time)
      E0 01C8      MOVW	R24,R16
      E1 9701      SBIW	R24,1
      E2 018C      MOVW	R16,R24
      E3 3000      CPI	R16,0
      E4 0701      CPC	R16,R17
      E5 F7D1      BNE	0x00E0
(0007) {;}
(0008) WDR();
      E6 95A8      WDR
      E7 9508      RET
_LCD_WRI_ORDER:
  DATA                 --> Y,+1
  ORDER                --> R10
      E8 92AA      ST	R10,-Y
      E9 2EA0      MOV	R10,R16
(0009) }
(0010) 
(0011)  /*--------------------------向LCD写命令---------*/
(0012) ///////////////////////////////////////////////////////////////////////////////////////////////////
(0013) void LCD_WRI_ORDER(unsigned char ORDER)
(0014)  { 
(0015)   unsigned char DATA;
(0016)   WDR();
      EA 95A8      WDR
(0017)  // PORTD=PORTD&0X1F;//PD7,6,5置0
(0018)   PORTA=PORTA&0XF8;
      EB B38B      IN	R24,0x1B
      EC 7F88      ANDI	R24,0xF8
      ED BB8B      OUT	0x1B,R24
(0019)  /*
(0020)   PORTD=PORTD|0X40; 
(0021)   DDRB=0X00;
(0022)   DATA=PINB;
(0023)   while(DATA&&0x80)
(0024)   {DATA=PINB;WDR();}
(0025)   PORTD=PORTD&0X1F;
(0026)   DDRB=0Xff;
(0027) */
(0028)   LCD_WIRTE_DELAY(200);
      EE EC08      LDI	R16,0xC8
      EF E010      LDI	R17,0
      F0 DFEE      RCALL	_LCD_WIRTE_DELAY
(0029)   //PORTD=PORTD&0X1F;//PD7,6,5置0
(0030)   PORTA=PORTA&0XF8;
      F1 B38B      IN	R24,0x1B
      F2 7F88      ANDI	R24,0xF8
      F3 BB8B      OUT	0x1B,R24
(0031)   PORTB=ORDER;                                        //
      F4 BAA8      OUT	0x18,R10
(0032)   //PORTD=PORTD|0X80;//PD7置1
(0033)   PORTA=PORTA |0X04;
      F5 9ADA      SBI	0x1B,2
(0034)   LCD_WIRTE_DELAY(200);
      F6 EC08      LDI	R16,0xC8
      F7 E010      LDI	R17,0
      F8 DFE6      RCALL	_LCD_WIRTE_DELAY
(0035)   //PORTD=PORTD&0X1F;//PD7,6,5置0
(0036)   PORTA=PORTA&0XF8;
      F9 B38B      IN	R24,0x1B
      FA 7F88      ANDI	R24,0xF8
      FB BB8B      OUT	0x1B,R24
      FC 90A9      LD	R10,Y+
      FD 9508      RET
_LCD_WRI_DATA:
  ords                 --> Y,+1
  DATA                 --> R10
      FE 92AA      ST	R10,-Y
      FF 2EA0      MOV	R10,R16
(0037)  }
(0038) 
(0039) 
(0040) /*-----------写到lcd中显示数据---------*/
(0041) ////////////////////////////////////////////////////////////////////////////////////
(0042) void LCD_WRI_DATA(unsigned char DATA)
(0043) {
(0044) 
(0045)  unsigned char ords;
(0046)   WDR();
     100 95A8      WDR
(0047)   
(0048)   /*
(0049)   PORTD=PORTD&0X1F; 
(0050)   PORTD=PORTD|0X40; 
(0051)   DDRB=0X00;
(0052)   ords=PINB;
(0053)   while(ords&&0x80)
(0054)   {ords=PINB;WDR();}
(0055)   DDRB=0Xff;
(0056)   */
(0057)   //PORTD=PORTD&0X7F;//PD7置0
(0058)   PORTA=PORTA&0XFB; 
     101 B38B      IN	R24,0x1B
     102 7F8B      ANDI	R24,0xFB
     103 BB8B      OUT	0x1B,R24
(0059)   LCD_WIRTE_DELAY(200);
     104 EC08      LDI	R16,0xC8
     105 E010      LDI	R17,0
     106 DFD8      RCALL	_LCD_WIRTE_DELAY
(0060)   //PORTD=PORTD|0X20; //PD5置1
(0061)   PORTA=PORTA|0X01;
     107 9AD8      SBI	0x1B,0
(0062)   PORTB=DATA;
     108 BAA8      OUT	0x18,R10
(0063)   //PORTD=PORTD|0X80;//PD7置1
(0064)   PORTA=PORTA |0X04;
     109 9ADA      SBI	0x1B,2
(0065)   LCD_WIRTE_DELAY(200);
     10A EC08      LDI	R16,0xC8
     10B E010      LDI	R17,0
     10C DFD2      RCALL	_LCD_WIRTE_DELAY
(0066)   //PORTD=PORTD&0X1F;//PD7,6,5置0
(0067)   PORTA=PORTA & 0XF8;
     10D B38B      IN	R24,0x1B
     10E 7F88      ANDI	R24,0xF8
     10F BB8B      OUT	0x1B,R24
     110 90A9      LD	R10,Y+
     111 9508      RET
(0068) }
(0069) 
(0070) 
(0071) 
(0072) 
(0073) /*-------------延时46us----------*/
(0074) void LCD_DELAY()
(0075)  {
(0076)   unsigned int time=500;
_LCD_DELAY:
  time                 --> R16
     112 EF04      LDI	R16,0xF4
     113 E011      LDI	R17,1
(0077)   WDR();
     114 95A8      WDR
(0078)   while(--time);
     115 01C8      MOVW	R24,R16
     116 9701      SBIW	R24,1
     117 018C      MOVW	R16,R24
     118 3000      CPI	R16,0
     119 0701      CPC	R16,R17
     11A F7D1      BNE	0x0115
(0079)   WDR();
     11B 95A8      WDR
     11C 9508      RET
(0080)  }
(0081)  
(0082)  
(0083) void LCD_CLEAR()
(0084) {
(0085)   LCD_WRI_ORDER(0X01);
_LCD_CLEAR:
     11D E001      LDI	R16,1
     11E DFC9      RCALL	_LCD_WRI_ORDER
(0086)   LCD_DELAY();
     11F DFF2      RCALL	_LCD_DELAY
     120 9508      RET
(0087) }
(0088) 
(0089) 
(0090) //#define EN (DDRD|=BIT(PD7))
(0091) //#define RW (DDRD|=BIT(PD6))
(0092) //#define CR (DDRD|=BIT(PD5))
(0093) //////////////////////////////////////////////////////////////
(0094) #define EN (DDRA|=BIT(PA2))
(0095) #define RW (DDRA|=BIT(PA1))
(0096) #define CR (DDRA|=BIT(PA0))
(0097) /////////////////////////////////////////////////////////////
(0098) 
(0099) 
(0100) void LCD_WORD_INI(void)
(0101)  {
(0102)     WDR();
_LCD_WORD_INI:
     121 95A8      WDR
(0103)     EN;RW;CR;
     122 9AD2      SBI	0x1A,2
     123 9AD1      SBI	0x1A,1
     124 9AD0      SBI	0x1A,0
(0104)    LCD_WRI_ORDER(0X30);			   /*----------------清显示--------------------*/
     125 E300      LDI	R16,0x30
     126 DFC1      RCALL	_LCD_WRI_ORDER
(0105)    LCD_DELAY();
     127 DFEA      RCALL	_LCD_DELAY
(0106)    LCD_WRI_ORDER(0X30);			   /*----------------清显示--------------------*/
     128 E300      LDI	R16,0x30
     129 DFBE      RCALL	_LCD_WRI_ORDER
(0107)    LCD_DELAY();
     12A DFE7      RCALL	_LCD_DELAY
(0108)    LCD_DELAY();
     12B DFE6      RCALL	_LCD_DELAY
(0109)    LCD_WRI_ORDER(0X0C);			   /*------------ 显示右移光标右移 --------------*/
     12C E00C      LDI	R16,0xC
     12D DFBA      RCALL	_LCD_WRI_ORDER
(0110)    LCD_DELAY(); 
     12E DFE3      RCALL	_LCD_DELAY
(0111)    LCD_WRI_ORDER(0X01);			   /*------------ 显示右移光标右移 --------------*/
     12F E001      LDI	R16,1
     130 DFB7      RCALL	_LCD_WRI_ORDER
(0112)    Delay1ms(1);
     131 E001      LDI	R16,1
     132 E010      LDI	R17,0
     133 940E 00B3 CALL	_Delay1ms
(0113)    LCD_WRI_ORDER(0X06);			   /*-------功能定为基本指令集动作8位------------*/
     135 E006      LDI	R16,6
     136 DFB1      RCALL	_LCD_WRI_ORDER
(0114)    LCD_DELAY();
     137 DFDA      RCALL	_LCD_DELAY
     138 9508      RET
_LCD_ADD:
  ADD                  --> R10
     139 92AA      ST	R10,-Y
     13A 2EA0      MOV	R10,R16
(0115)  }
(0116) /*
(0117) void LCD_PIC_INI()
(0118)  {
(0119)    WDR();
(0120)    LCD_WORD_INI();
(0121)    LCD_WRI_ORDER(0X32);			 /*-------功能设定为基本指令集8位显示图形-----------*/
(0122)  /*  LCD_DELAY();
(0123)    LCD_WRI_ORDER(0X36);			 /*-------功能设定为扩充指令集8位显示图形-----------*/
(0124)  //  LCD_DELAY();
(0125)  //}*/
(0126) void LCD_ADD(unsigned char ADD)//写入地址
(0127)  {
(0128)    LCD_WRI_ORDER(ADD);
     13B 2D0A      MOV	R16,R10
     13C DFAB      RCALL	_LCD_WRI_ORDER
(0129)    LCD_DELAY();
     13D DFD4      RCALL	_LCD_DELAY
     13E 90A9      LD	R10,Y+
     13F 9508      RET
_DISPLAY_LCD:
  Y                    --> R10
  DISP                 --> R20
  ADD                  --> R10
     140 940E 024E CALL	push_xgset300C
     142 01A9      MOVW	R20,R18
     143 2EA0      MOV	R10,R16
(0130)   } 
(0131)   
(0132) void DISPLAY_LCD(unsigned char ADD,unsigned char *DISP)//显示字符串
(0133) {  
(0134)    unsigned char Y;
(0135)    WDR();
     144 95A8      WDR
(0136)    LCD_WRI_ORDER(ADD);
     145 2D0A      MOV	R16,R10
     146 DFA1      RCALL	_LCD_WRI_ORDER
(0137)    LCD_DELAY();

⌨️ 快捷键说明

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