📄 text1.lst
字号:
(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 + -