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

📄 text1.lst

📁 ATmega16-ad1602
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0178) // *********************************************** //
(0179) // *** Position the LCD cursor at row 1, col 1 *** //
(0180) // *********************************************** //
(0181) void LCD_Home(void)
(0182) {
(0183) LCD_WriteControl(0x02);
_LCD_Home:
    00108 E002      LDI	R16,2
    00109 CFAF      RJMP	_LCD_WriteControl
_LCD_DisplayCharacter:
  Char                 --> R10
    0010A 92AA      ST	-Y,R10
    0010B 2EA0      MOV	R10,R16
(0184) }
(0185) // ****************************************************************** //
(0186) // *** Display a single character, at the current cursor location *** //
(0187) // ****************************************************************** //
(0188) void LCD_DisplayCharacter (char Char)
(0189) {
(0190) LCD_WriteData (Char);
    0010C 2D0A      MOV	R16,R10
    0010D DFCB      RCALL	_LCD_WriteData
    0010E 90A9      LD	R10,Y+
    0010F 9508      RET
_LCD_DisplayString_F:
  string               --> R20
  column               --> R12
  row                  --> R10
    00110 940E 02F1 CALL	push_xgset303C
    00112 2EC2      MOV	R12,R18
    00113 2EA0      MOV	R10,R16
    00114 814E      LDD	R20,Y+6
    00115 815F      LDD	R21,Y+7
(0191) }
(0192) // ********************************************************************* //
(0193) // *** Display a string at the specified row and column, using FLASH *** //
(0194) // ********************************************************************* //
(0195) void LCD_DisplayString_F (char row, char column , unsigned char __flash *string)
(0196) {
(0197) LCD_Cursor (row, column);
    00116 2D2C      MOV	R18,R12
    00117 2D0A      MOV	R16,R10
    00118 D021      RCALL	_LCD_Cursor
    00119 C006      RJMP	0x0120
(0198) while (*string)
(0199) {
(0200) LCD_DisplayCharacter (*string++);
    0011A 011A      MOVW	R2,R20
    0011B 5F4F      SUBI	R20,0xFF
    0011C 4F5F      SBCI	R21,0xFF
    0011D 01F1      MOVW	R30,R2
    0011E 9104      LPM	R16,Z
    0011F DFEA      RCALL	_LCD_DisplayCharacter
    00120 01FA      MOVW	R30,R20
    00121 9024      LPM	R2,Z
    00122 2022      TST	R2
    00123 F7B1      BNE	0x011A
    00124 940C 02F8 JMP	pop_xgset303C
_LCD_DisplayString:
  string               --> R10
  column               --> R14
  row                  --> R12
    00126 940E 02D2 CALL	push_xgset00FC
    00128 2EE2      MOV	R14,R18
    00129 2EC0      MOV	R12,R16
    0012A 80AE      LDD	R10,Y+6
    0012B 80BF      LDD	R11,Y+7
(0201) }
(0202) }
(0203) // ******************************************************************* //
(0204) // *** Display a string at the specified row and column, using RAM *** //
(0205) // ******************************************************************* //
(0206) void LCD_DisplayString (char row, char column ,unsigned char *string)
(0207) {
(0208) LCD_Cursor (row, column);
    0012C 2D2E      MOV	R18,R14
    0012D 2D0C      MOV	R16,R12
    0012E D00B      RCALL	_LCD_Cursor
    0012F C004      RJMP	0x0134
(0209) while (*string)
(0210) LCD_DisplayCharacter (*string++);
    00130 01F5      MOVW	R30,R10
    00131 9101      LD	R16,Z+
    00132 015F      MOVW	R10,R30
    00133 DFD6      RCALL	_LCD_DisplayCharacter
    00134 01F5      MOVW	R30,R10
    00135 8020      LD	R2,Z
    00136 2022      TST	R2
    00137 F7C1      BNE	0x0130
    00138 940C 02C7 JMP	pop_xgset00FC
_LCD_Cursor:
  column               --> R20
  row                  --> R10
    0013A 940E 02E3 CALL	push_xgsetF00C
    0013C 2F42      MOV	R20,R18
    0013D 2EA0      MOV	R10,R16
(0211) }
(0212) // *************************************************** //
(0213) // *** Position the LCD cursor at "row", "column". *** //
(0214) // *************************************************** //
(0215) void LCD_Cursor (char row, char column)
(0216) {
(0217) switch (row) {
    0013E 2D6A      MOV	R22,R10
    0013F 2777      CLR	R23
    00140 3061      CPI	R22,1
    00141 E0E0      LDI	R30,0
    00142 077E      CPC	R23,R30
    00143 F069      BEQ	0x0151
    00144 3062      CPI	R22,2
    00145 E0E0      LDI	R30,0
    00146 077E      CPC	R23,R30
    00147 F071      BEQ	0x0156
    00148 3063      CPI	R22,3
    00149 E0E0      LDI	R30,0
    0014A 077E      CPC	R23,R30
    0014B F079      BEQ	0x015B
    0014C 3064      CPI	R22,4
    0014D E0E0      LDI	R30,0
    0014E 077E      CPC	R23,R30
    0014F F081      BEQ	0x0160
    00150 C013      RJMP	0x0164
(0218) case 1: LCD_WriteControl (0x80 + column - 1); break;
    00151 2F04      MOV	R16,R20
    00152 5800      SUBI	R16,0x80
    00153 5001      SUBI	R16,1
    00154 DF64      RCALL	_LCD_WriteControl
    00155 C00E      RJMP	0x0164
(0219) case 2: LCD_WriteControl (0xc0 + column - 1); break;
    00156 2F04      MOV	R16,R20
    00157 5400      SUBI	R16,0x40
    00158 5001      SUBI	R16,1
    00159 DF5F      RCALL	_LCD_WriteControl
    0015A C009      RJMP	0x0164
(0220) case 3: LCD_WriteControl (0x94 + column - 1); break;
    0015B 2F04      MOV	R16,R20
    0015C 560C      SUBI	R16,0x6C
    0015D 5001      SUBI	R16,1
    0015E DF5A      RCALL	_LCD_WriteControl
    0015F C004      RJMP	0x0164
(0221) case 4: LCD_WriteControl (0xd4 + column - 1); break;
    00160 2F04      MOV	R16,R20
    00161 520C      SUBI	R16,0x2C
    00162 5001      SUBI	R16,1
    00163 DF55      RCALL	_LCD_WriteControl
(0222) default: break;
    00164 940C 02EA JMP	pop_xgsetF00C
(0223) }
(0224) }
(0225) // ************************** //
(0226) // *** Turn the cursor on *** //
(0227) // ************************** //
(0228) void LCD_Cursor_On (void)
(0229) {
(0230) LCD_WriteControl (LCD_CURS_ON);
_LCD_Cursor_On:
    00166 E00D      LDI	R16,0xD
    00167 CF51      RJMP	_LCD_WriteControl
(0231) }
(0232) // *************************** //
(0233) // *** Turn the cursor off *** //
(0234) // *************************** //
(0235) void LCD_Cursor_Off (void)
(0236) {
(0237) LCD_WriteControl (LCD_ON);
_LCD_Cursor_Off:
    00168 E00C      LDI	R16,0xC
    00169 CF4F      RJMP	_LCD_WriteControl
(0238) }
(0239) // ******************** //
(0240) // *** Turn Off LCD *** //
(0241) // ******************** //
(0242) void LCD_Display_Off (void)
(0243) {
(0244) LCD_WriteControl(LCD_OFF);
_LCD_Display_Off:
    0016A E008      LDI	R16,0x8
    0016B CF4D      RJMP	_LCD_WriteControl
(0245) }
(0246) // ******************* //
(0247) // *** Turn On LCD *** //
(0248) // ******************* //
(0249) void LCD_Display_On (void)
(0250) {
(0251) LCD_WriteControl(LCD_ON);
_LCD_Display_On:
    0016C E00C      LDI	R16,0xC
    0016D CF4B      RJMP	_LCD_WriteControl
FILE: F:\file\数控电源3\ad_da\cfile\delay.c
(0001) #define DELAY_C
(0002) #include "includes.h"
(0003) #define XTAL 8    //晶振频率,单位MHz
(0004) void delay_1us(void)                 //1us延时函数
(0005)   {
(0006)    asm("nop");
_delay_1us:
    0016E 0000      NOP
    0016F 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R10
    00170 940E 02D9 CALL	push_xgset300C
    00172 0158      MOVW	R10,R16
(0007)   }
(0008) 
(0009) void delay_nus(unsigned int n)       //N us延时函数
(0010)   {
(0011)    unsigned int i=0;
(0012)    for (i=0;i<n;i++)
    00173 2744      CLR	R20
    00174 2755      CLR	R21
    00175 C003      RJMP	0x0179
(0013)    delay_1us();
    00176 DFF7      RCALL	_delay_1us
    00177 5F4F      SUBI	R20,0xFF
    00178 4F5F      SBCI	R21,0xFF
    00179 154A      CP	R20,R10
    0017A 055B      CPC	R21,R11
    0017B F3D0      BCS	0x0176
    0017C 940C 02DE JMP	pop_xgset300C
(0014)   }
(0015)   
(0016) void delay_1ms(void)                 //1ms延时函数
(0017)   {
(0018)    unsigned int i;
(0019)    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
_delay_1ms:
  i                    --> R16
    0017E 2700      CLR	R16
    0017F 2711      CLR	R17
    00180 C002      RJMP	0x0183
    00181 5F0F      SUBI	R16,0xFF
    00182 4F1F      SBCI	R17,0xFF
    00183 E786      LDI	R24,0x76
    00184 E094      LDI	R25,4
    00185 1708      CP	R16,R24
    00186 0719      CPC	R17,R25
    00187 F3C8      BCS	0x0181
    00188 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
    00189 940E 02D9 CALL	push_xgset300C
    0018B 0158      MOVW	R10,R16
(0020)   }
(0021)   
(0022) void delay_nms(unsigned int n)       //N ms延时函数
(0023)   {
(0024)    unsigned int i=0;
(0025)    for (i=0;i<n;i++)
    0018C 2744      CLR	R20
    0018D 2755      CLR	R21
    0018E C003      RJMP	0x0192
(0026)    {
(0027)       delay_1ms();
    0018F DFEE      RCALL	_delay_1ms
    00190 5F4F      SUBI	R20,0xFF
    00191 4F5F      SBCI	R21,0xFF
    00192 154A      CP	R20,R10
    00193 055B      CPC	R21,R11
    00194 F3D0      BCS	0x018F
    00195 940C 02DE JMP	pop_xgset300C
_ad_result:
  Vref                 --> R22
  j                    --> Y,+2
  value1               --> R20
  count                --> R10
    00197 940E 02E3 CALL	push_xgsetF00C
    00199 9726      SBIW	R28,6
FILE: F:\file\数控电源3\ad_da\cfile\adc.c
(0001) #define ADC_C
(0002) #include "includes.h"
(0003) #define MaxAdcBufSize 9
(0004) #define AdcBufStep 3 //为了算巴士均值
(0005) 
(0006) static volatile unsigned int ADCBuffer[MaxAdcBufSize];
(0007) static volatile unsigned int addata;
(0008) unsigned char  adc_mux = 0x00;//选择通道:ADC0
(0009) 
(0010) 
(0011) void ad_result(void)
(0012) {    
(0013) 	 float j;
(0014) 	 unsigned int count;
(0015) 	 unsigned int Vref=50000; 
    0019A E560      LDI	R22,0x50
    0019B EC73      LDI	R23,0xC3
(0016)      unsigned char *value1 = "0.000 V";	 
    0019C E742      LDI	R20,0x72
    0019D E050      LDI	R21,0
(0017)      //addata=ADCL;
(0018) 	 //addata=addata+ADCH*256;
(0019) 	 addata=ADCBuffer[0];
    0019E 9020 007C LDS	R2,adc.c:ADCBuffer
    001A0 9030 007D LDS	R3,adc.c:ADCBuffer+1
    001A2 9230 007B STS	adc.c:addata+1,R3
    001A4 9220 007A STS	adc.c:addata,R2
(0020) 	 	 
(0021)      
(0022) 	 j = (float)(((float)((Vref/1024)))*addata)/1000.00;
    001A6 E02A      LDI	R18,0xA
    001A7 E030      LDI	R19,0
    001A8 018B      MOVW	R16,R22
    001A9 940E 031C CALL	lsr16
    001AB 940E 0355 CALL	uint2fp
    001AD 0118      MOVW	R2,R16
    001AE 0129      MOVW	R4,R18
    001AF 9100 007A LDS	R16,adc.c:addata
    001B1 9110 007B LDS	R17,adc.c:addata+1
    001B3 940E 0355 CALL	uint2fp
    001B5 933A      ST	-Y,R19
    001B6 932A      ST	-Y,R18
    001B7 931A      ST	-Y,R17
    001B8 930A      ST	-Y,R16
    001B9 0181      MOVW	R16,R2
    001BA 0192      MOVW	R18,R4
    001BB 940E 04FC CALL	fpmule2
    001BD 0118      MOVW	R2,R16
    001BE 0129      MOVW	R4,R18
    001BF E508      LDI	R16,0x58
    001C0 E010      LDI	R17,0
    001C1 940E 0308 CALL	lpm32
    001C3 933A      ST	-Y,R19
    001C4 932A      ST	-Y,R18
    001C5 931A      ST	-Y,R17
    001C6 930A      ST	-Y,R16
    001C7 0181      MOVW	R16,R2
    001C8 0192      MOVW	R18,R4
    001C9 940E 0382 CALL	fpdiv2
    001CB 830A      STD	Y+2,R16
    001CC 831B      STD	Y+3,R17
    001CD 832C      STD	Y+4,R18
    001CE 833D      STD	Y+5,R19
(0023) 	 count = j*100;		
    001CF E504      LDI	R16,0x54
    001D0 E010      LDI	R17,0
    001D1 940E 0308 CALL	lpm32
    001D3 01CE      MOVW	R24,R28
    001D4 9602      ADIW	R24,2
    001D5 939A      ST	-Y,R25
    001D6 938A      ST	-Y,R24
    001D7 940E 04F2 CALL	fpmule1
    001D9 940E 0323 CALL	fpint
    001DB 0158      MOVW	R10,R16
(0024) 				
(0025)      value1[0] = count /1000+0x30;
    001DC EE28      LDI	R18,0xE8
    001DD E033      LDI	R19,3
    001DE 940E 029D CALL	div16u
    001E0 01C8      MOVW	R24,R16
    001E1 96C0      ADIW	R24,0x30
    001E2 01FA      MOVW	R30,R20
    001E3 8380      ST	Z,R24
(0026) 	 count = count %1000;
    001E4 EE28      LDI	R18,0xE8
    001E5 E033      LDI	R19,3
    001E6 0185      MOVW	R16,R10
    001E7 940E 029B CALL	mod16u
    001E9 0158      MOVW	R10,R16
(0027)      value1[2] = count /100+0x30;
    001EA E624      LDI	R18,0x64
    001EB E030      LDI	R19,0
    001EC 940E 029D CALL	div16u
    001EE 01C8      MOVW	R24,R16
    001EF 96C0      ADIW	R24,0x30
    001F0 01FA      MOVW	R30,R20
    001F1 8382      STD	Z+2,R24
(0028)      count = count %100;
    001F2 E624      LDI	R18,0x64
    001F3 E030      LDI	R19,0
    001F4 0185      MOVW	R16,R10
    001F5 940E 029B CALL	mod16u
    001F7 0158      MOVW	R10,R16
(0029)      value1[3] = count  /10 + 0x30;			 
    001F8 E02A      LDI	R18,0xA
    001F9 E030      LDI	R19,0
    001FA 940E 029D CALL	div16u
    001FC 01C8      MOVW	R24,R16
    001FD 96C0      ADIW	R24,0x30
    001FE 01FA      MOVW	R30,R20
    001FF 8383      STD	Z+3,R24
(0030)      value1[4] = count  %10 + 0x30;			 
    00200 E02A      LDI	R18,0xA
    00201 E030      LDI	R19,0
    00202 0185      MOVW	R16,R10
    00203 940E 029B CALL	mod16u
    00205 01C8      MOVW	R24,R16
    00206 96C0      ADIW	R24,0x30
    00207 01FA      MOVW	R30,R20
    00208 8384      STD	Z+4,R24
(0031)        
(0032)      //LCD_Cursor(0,1);
(0033) 		
(0034)      LCD_DisplayString(2,1,value1);  
    00209 8359      STD	Y+1,R21
    0020A 8348      ST	Y,R20
    0020B E021      LDI	R18,1
    0020C E002      LDI	R16,2
    0020D 940E 0126 CALL	_LCD_DisplayString
    0020F 9626      ADIW	R28,6
    00210 940C 02EA JMP	pop_xgsetF00C
(0035)                
(0036)     // return addata;
(0037) }   
(0038) 

⌨️ 快捷键说明

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