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

📄 test.lst

📁 max144源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
     124 E030      LDI	R19,0
     125 2700      CLR	R16
     126 2711      CLR	R17
     127 DF97      RCALL	_LCD_write_char
     128 9543      INC	R20
     129 3140      CPI	R20,0x10
     12A F3C0      BCS	0x0123
     12B 9149      LD	R20,Y+
     12C 9508      RET
_LCD_write_string:
  s                    --> R20
  Y                    --> R12
  X                    --> R10
     12D 940E 0383 CALL	push_xgset303C
     12F 2EC2      MOV	R12,R18
     130 2EA0      MOV	R10,R16
     131 814E      LDD	R20,Y+6
     132 815F      LDD	R21,Y+7
(0114) }
(0115) /*-------------------------------------------------------------
(0116) 函数: 写字符串
(0117) 参数:列---X=0~15,行---Y=0~1 写地址
(0118)       s为所要写的字符串
(0119) ---------------------------------------------------------------*/
(0120) void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) 
(0121) {
(0122)  LCD_set_xy(X,Y);   
     133 2D2C      MOV	R18,R12
     134 2D0A      MOV	R16,R10
     135 DF71      RCALL	_LCD_set_xy
     136 C008      RJMP	0x013F
(0123)  while(*s)  
(0124)  {
(0125)   LCD_write_char(0,*s);
     137 01FA      MOVW	R30,R20
     138 8120      LDD	R18,Z+0
     139 2733      CLR	R19
     13A 2700      CLR	R16
     13B 2711      CLR	R17
     13C DF82      RCALL	_LCD_write_char
(0126)   s++;
     13D 5F4F      SUBI	R20,0xFF
     13E 4F5F      SBCI	R21,0xFF
     13F 01FA      MOVW	R30,R20
     140 8020      LDD	R2,Z+0
     141 2022      TST	R2
     142 F7A1      BNE	0x0137
     143 940C 038A JMP	pop_xgset303C
_LCD_write_data:
  data                 --> Y,+0
  i                    --> R20
  dat                  --> R14
  Y                    --> R12
  X                    --> R10
     145 940E 036C CALL	push_xgset30FC
     147 2EC2      MOV	R12,R18
     148 2EA0      MOV	R10,R16
     149 9724      SBIW	R28,4
     14A 84EC      LDD	R14,Y+12
     14B 84FD      LDD	R15,Y+13
(0127)  }
(0128) }
(0129) 
(0130) /*-------------------------------------------------------------
(0131) 函数: 写数字
(0132) 参数:列---X=0~15,行---Y=0~1 写地址
(0133)       dat为所要写的数字
(0134) ---------------------------------------------------------------*/
(0135) void LCD_write_data(unsigned char X,unsigned char Y,int dat)
(0136) {
(0137)  unsigned char data[4];
(0138)  unsigned char i;
(0139)   
(0140)  data[0]=dat/1000+0x30; dat%=1000;
     14C EE28      LDI	R18,0xE8
     14D E033      LDI	R19,3
     14E 0187      MOVW	R16,R14
     14F 940E 02C1 CALL	div16s
     151 01C8      MOVW	R24,R16
     152 96C0      ADIW	R24,0x30
     153 8388      STD	Y+0,R24
     154 EE28      LDI	R18,0xE8
     155 E033      LDI	R19,3
     156 0187      MOVW	R16,R14
     157 940E 02BD CALL	mod16s
     159 0178      MOVW	R14,R16
(0141)  data[1]=dat/100+0x30;  dat%=100;
     15A E624      LDI	R18,0x64
     15B E030      LDI	R19,0
     15C 940E 02C1 CALL	div16s
     15E 01C8      MOVW	R24,R16
     15F 96C0      ADIW	R24,0x30
     160 8389      STD	Y+1,R24
     161 E624      LDI	R18,0x64
     162 E030      LDI	R19,0
     163 0187      MOVW	R16,R14
     164 940E 02BD CALL	mod16s
     166 0178      MOVW	R14,R16
(0142)  data[2]=dat/10+0x30; 
     167 E02A      LDI	R18,0xA
     168 E030      LDI	R19,0
     169 940E 02C1 CALL	div16s
     16B 01C8      MOVW	R24,R16
     16C 96C0      ADIW	R24,0x30
     16D 838A      STD	Y+2,R24
(0143)  data[3]=dat%10+0x30; 
     16E E02A      LDI	R18,0xA
     16F E030      LDI	R19,0
     170 0187      MOVW	R16,R14
     171 940E 02BD CALL	mod16s
     173 01C8      MOVW	R24,R16
     174 96C0      ADIW	R24,0x30
     175 838B      STD	Y+3,R24
(0144)  
(0145)  LCD_set_xy(X,Y);
     176 2D2C      MOV	R18,R12
     177 2D0A      MOV	R16,R10
     178 DF2E      RCALL	_LCD_set_xy
(0146)  for(i=0;i<4;i++)
     179 2744      CLR	R20
     17A C00B      RJMP	0x0186
(0147)   LCD_write_char(0,data[i]);
     17B 01CE      MOVW	R24,R28
     17C 2FE4      MOV	R30,R20
     17D 27FF      CLR	R31
     17E 0FE8      ADD	R30,R24
     17F 1FF9      ADC	R31,R25
     180 8120      LDD	R18,Z+0
     181 2733      CLR	R19
     182 2700      CLR	R16
     183 2711      CLR	R17
     184 DF3A      RCALL	_LCD_write_char
     185 9543      INC	R20
     186 3044      CPI	R20,4
     187 F398      BCS	0x017B
     188 9624      ADIW	R28,4
     189 940C 0361 JMP	pop_xgset30FC
_max144_read:
  adc                  --> Y,+0
  adc_temp             --> R10
  temp                 --> R12
     18B 940E 0391 CALL	push_xgsetF03C
     18D 9724      SBIW	R28,4
FILE: D:\iccavr\mega16\11\max144\max144.h
(0001) //**********ADC口线定义**********//
(0002) #define  adc_cs    PA5 
(0003) #define  adc_sdat  PA6
(0004) #define  adc_sclk  PA7
(0005) #define  adc_port  PORTA
(0006) #define  adc_ddr   DDRA
(0007) #define  adc_pin   PINA
(0008) 
(0009) unsigned int adc_out1,adc_out0;
(0010) unsigned int adcttemp[2][15];
(0011) unsigned int adcfirst[2];
(0012) 
(0013) void max144_read(void)
(0014) {
(0015)   unsigned char temp;
(0016)   unsigned int adc_temp=0;
     18E 24AA      CLR	R10
     18F 24BB      CLR	R11
(0017)   unsigned long adc;
(0018)   
(0019)   /*********max144模拟SPI口线设置**********/
(0020)   adc_port|=BIT(adc_cs)|BIT(adc_sdat)|BIT(adc_sclk);
     190 B38B      IN	R24,0x1B
     191 6E80      ORI	R24,0xE0
     192 BB8B      OUT	0x1B,R24
(0021)   adc_ddr|=BIT(adc_cs)|BIT(adc_sclk);
     193 B38A      IN	R24,0x1A
     194 6A80      ORI	R24,0xA0
     195 BB8A      OUT	0x1A,R24
(0022)   adc_ddr&=~BIT(adc_sdat);
     196 98D6      CBI	0x1A,6
(0023) 
(0024)   adc_port|=BIT(adc_cs);
     197 9ADD      SBI	0x1B,5
(0025)   adc_port|=BIT(adc_sclk);
     198 9ADF      SBI	0x1B,7
(0026)   adc_port&=~BIT(adc_cs);
     199 98DD      CBI	0x1B,5
(0027)   asm("nop");asm("nop");asm("nop");asm("nop");
     19A 0000      NOP
     19B 0000      NOP
     19C 0000      NOP
     19D 0000      NOP
(0028)   adc_port&=~BIT(adc_sclk);
     19E 98DF      CBI	0x1B,7
     19F C005      RJMP	0x01A5
(0029)   while(1) 
(0030)   { 
(0031)     if((adc_pin&BIT(adc_sdat))==BIT(adc_sdat)) 
     1A0 B389      IN	R24,0x19
     1A1 7480      ANDI	R24,0x40
     1A2 3480      CPI	R24,0x40
     1A3 F409      BNE	0x01A5
(0032) 	break; 
     1A4 C001      RJMP	0x01A6
     1A5 CFFA      RJMP	0x01A0
(0033)    }
(0034)   temp=16; while(temp--)
     1A6 E180      LDI	R24,0x10
     1A7 2EC8      MOV	R12,R24
     1A8 C00B      RJMP	0x01B4
(0035)   {
(0036)      adc_port|=BIT(adc_sclk); 
     1A9 9ADF      SBI	0x1B,7
(0037)      if((adc_pin&BIT(adc_sdat))==BIT(adc_sdat)) 
     1AA B389      IN	R24,0x19
     1AB 7480      ANDI	R24,0x40
     1AC 3480      CPI	R24,0x40
     1AD F419      BNE	0x01B1
(0038)        adc_temp++; 
     1AE 01C5      MOVW	R24,R10
     1AF 9601      ADIW	R24,1
     1B0 015C      MOVW	R10,R24
(0039)      adc_temp=adc_temp<<1;   
     1B1 0CAA      LSL	R10
     1B2 1CBB      ROL	R11
(0040)      adc_port&=~BIT(adc_sclk);
     1B3 98DF      CBI	0x1B,7
     1B4 2C2C      MOV	R2,R12
     1B5 2433      CLR	R3
     1B6 2D82      MOV	R24,R2
     1B7 5081      SUBI	R24,1
     1B8 2EC8      MOV	R12,R24
     1B9 2022      TST	R2
     1BA F771      BNE	0x01A9
(0041)   }
(0042)   adc_port|=BIT(adc_cs);
     1BB 9ADD      SBI	0x1B,5
(0043) 
(0044)   if((adc_temp&0x2000)==0x2000)
     1BC 01C5      MOVW	R24,R10
     1BD 7080      ANDI	R24,0
     1BE 7290      ANDI	R25,0x20
     1BF 3080      CPI	R24,0
     1C0 E2A0      LDI	R26,0x20
     1C1 079A      CPC	R25,R26
     1C2 F009      BEQ	0x01C4
     1C3 C067      RJMP	0x022B
(0045)   {
(0046)     adcfirst[0]=(adc_temp>>1)&0xfff;
     1C4 01C5      MOVW	R24,R10
     1C5 9596      LSR	R25
     1C6 9587      ROR	R24
     1C7 709F      ANDI	R25,0xF
     1C8 9390 0083 STS	adcfirst+1,R25
     1CA 9380 0082 STS	adcfirst,R24
(0047) 	adc_temp&=0x1ffc;
     1CC 01C5      MOVW	R24,R10
     1CD 7F8C      ANDI	R24,0xFC
     1CE 719F      ANDI	R25,0x1F
     1CF 015C      MOVW	R10,R24
(0048) 	adc=adc_temp;
     1D0 011C      MOVW	R2,R24
     1D1 2444      CLR	R4
     1D2 2455      CLR	R5
     1D3 8228      STD	Y+0,R2
     1D4 8239      STD	Y+1,R3
     1D5 824A      STD	Y+2,R4
     1D6 825B      STD	Y+3,R5
(0049) 	adcttemp[0][14]=adc_temp;
     1D7 92B0 00A3 STS	0x00A3,R11
     1D9 92A0 00A2 STS	0x00A2,R10
(0050)     for(temp=0;temp<14;temp++) 
     1DB 24CC      CLR	R12
     1DC C02A      RJMP	0x0207
(0051) 	{
(0052) 	  adcttemp[0][temp]=adcttemp[0][temp+1];
     1DD E886      LDI	R24,0x86
     1DE E090      LDI	R25,0
     1DF 2DEC      MOV	R30,R12
     1E0 27FF      CLR	R31
     1E1 9631      ADIW	R30,1
     1E2 0FEE      LSL	R30
     1E3 1FFF      ROL	R31
     1E4 0FE8      ADD	R30,R24
     1E5 1FF9      ADC	R31,R25
     1E6 8020      LDD	R2,Z+0
     1E7 8031      LDD	R3,Z+1
     1E8 2DEC      MOV	R30,R12
     1E9 27FF      CLR	R31
     1EA 0FEE      LSL	R30
     1EB 1FFF      ROL	R31
     1EC 0FE8      ADD	R30,R24
     1ED 1FF9      ADC	R31,R25
     1EE 8231      STD	Z+1,R3
     1EF 8220      STD	Z+0,R2
(0053)       adc+=adcttemp[0][temp];
     1F0 2DEC      MOV	R30,R12
     1F1 27FF      CLR	R31
     1F2 0FEE      LSL	R30
     1F3 1FFF      ROL	R31
     1F4 0FE8      ADD	R30,R24
     1F5 1FF9      ADC	R31,R25
     1F6 8020      LDD	R2,Z+0
     1F7 8031      LDD	R3,Z+1
     1F8 2444      CLR	R4
     1F9 2455      CLR	R5
     1FA 8068      LDD	R6,Y+0
     1FB 8079      LDD	R7,Y+1
     1FC 808A      LDD	R8,Y+2
     1FD 809B      LDD	R9,Y+3
     1FE 0C62      ADD	R6,R2
     1FF 1C73      ADC	R7,R3
     200 1C84      ADC	R8,R4
     201 1C95      ADC	R9,R5
     202 8268      STD	Y+0,R6
     203 8279      STD	Y+1,R7
     204 828A      STD	Y+2,R8
     205 829B      STD	Y+3,R9
     206 94C3      INC	R12
     207 2D8C      MOV	R24,R12
     208 308E      CPI	R24,0xE
     209 F298      BCS	0x01DD
(0054) 	}
(0055)     adc/=15;
     20A E04F      LDI	R20,0xF
     20B E050      LDI	R21,0
     20C E060      LDI	R22,0
     20D E070      LDI	R23,0
     20E 8108      LDD	R16,Y+0
     20F 8119      LDD	R17,Y+1
     210 812A      LDD	R18,Y+2
     211 813B      LDD	R19,Y+3
     212 937A      ST	R23,-Y
     213 936A      ST	R22,-Y
     214 935A      ST	R21,-Y
     215 934A      ST	R20,-Y
     216 940E 02F7 CALL	div32u
     218 8308      STD	Y+0,R16
     219 8319      STD	Y+1,R17
     21A 832A      STD	Y+2,R18
     21B 833B      STD	Y+3,R19
(0056)     adc_temp=adc;
     21C 80A8      LDD	R10,Y+0
     21D 80B9      LDD	R11,Y+1
(0057)     adc_out1=adc>>1;
     21E 8028      LDD	R2,Y+0
     21F 8039      LDD	R3,Y+1
     220 804A      LDD	R4,Y+2
     221 805B      LDD	R5,Y+3
     222 9456      LSR	R5
     223 9447      ROR	R4
     224 9437      ROR	R3
     225 9427      ROR	R2
     226 9230 00C5 STS	adc_out1+1,R3
     228 9220 00C4 STS	adc_out1,R2
(0058)   }
     22A C066      RJMP	0x0291
(0059)   else 
(0060)   {
(0061)     adcfirst[1]=(adc_temp>>1)&0xfff;
     22B 01C5      MOVW	R24,R10
     22C 9596      LSR	R25
     22D 9587      ROR	R24
     22E 709F      ANDI	R25,0xF
     22F 9390 0085 STS	adcfirst+3,R25
     231 9380 0084 STS	adcfirst+2,R24
(0062) 	adc_temp&=0x1ffc;
     233 01C5      MOVW	R24,R10
     234 7F8C      ANDI	R24,0xFC
     235 719F      ANDI	R25,0x1F
     236 015C      MOVW	R10,R24
(0063) 	adc=adc_temp;
     237 011C      MOVW	R2,R24
     238 2444      CLR	R4
     239 2455      CLR	R5
     23A 8228      STD	Y+0,R2
     23B 8239      STD	Y+1,R3
     23C 824A      STD	Y+2,R4
     23D 825B      STD	Y+3,R5
(0064) 	adcttemp[1][14]=adc_temp;
     23E 92B0 00C1 STS	0x00C1,R11
     240 92A0 00C0 STS	0x00C0,R10
(0065)     for(temp=0;temp<14;temp++) 
     242 24CC      CLR	R12
     243 C02A      RJMP	0x026E
(0066) 	{
(0067) 	  adcttemp[1][temp]=adcttemp[1][temp+1];
     244 EA84      LDI	R24,0xA4
     245 E090      LDI	R25,0
     246 2DEC      MOV	R30,R12
     247 27FF      CLR	R31
     248 9631      ADIW	R30,1
     249 0FEE      LSL	R30
     24A 1FFF      ROL	R31
     24B 0FE8      ADD	R30,R24
     24C 1FF9      ADC	R31,R25
     24D 8020      LDD	R2,Z+0
     24E 8031      LDD	R3,Z+1
     24F 2DEC      MOV	R30,R12
     250 27FF      CLR	R31
     251 0FEE      LSL	R30
     252 1FFF      ROL	R31
     253 0FE8      ADD	R30,R24
     254 1FF9      ADC	R31,R25

⌨️ 快捷键说明

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