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

📄 test_1602.lst

📁 atmega32 +1602显示+ key控制 + ad转化电路都在一起测试通过
💻 LST
📖 第 1 页 / 共 5 页
字号:
    013F EB8E      LDI	R24,0xBE
    0140 E090      LDI	R25,0
    0141 1784      CP	R24,R20
    0142 0795      CPC	R25,R21
    0143 F0A4      BLT	0x0158
    0144 3747      CPI	R20,0x77
    0145 E0E0      LDI	R30,0
    0146 075E      CPC	R21,R30
    0147 F409      BNE	0x0149
    0148 C054      RJMP	0x019D
    0149 374B      CPI	R20,0x7B
    014A E0E0      LDI	R30,0
    014B 075E      CPC	R21,R30
    014C F409      BNE	0x014E
    014D C047      RJMP	0x0195
    014E 374D      CPI	R20,0x7D
    014F E0E0      LDI	R30,0
    0150 075E      CPC	R21,R30
    0151 F409      BNE	0x0153
    0152 C03A      RJMP	0x018D
    0153 374E      CPI	R20,0x7E
    0154 E0E0      LDI	R30,0
    0155 075E      CPC	R21,R30
    0156 F171      BEQ	0x0185
    0157 C047      RJMP	0x019F
    0158 3D47      CPI	R20,0xD7
    0159 E0E0      LDI	R30,0
    015A 075E      CPC	R21,R30
    015B F409      BNE	0x015D
    015C C03C      RJMP	0x0199
    015D 3D4B      CPI	R20,0xDB
    015E E0E0      LDI	R30,0
    015F 075E      CPC	R21,R30
    0160 F181      BEQ	0x0191
    0161 3D4D      CPI	R20,0xDD
    0162 E0E0      LDI	R30,0
    0163 075E      CPC	R21,R30
    0164 F121      BEQ	0x0189
    0165 3D4E      CPI	R20,0xDE
    0166 E0E0      LDI	R30,0
    0167 075E      CPC	R21,R30
    0168 F0C1      BEQ	0x0181
    0169 3D47      CPI	R20,0xD7
    016A E0E0      LDI	R30,0
    016B 075E      CPC	R21,R30
    016C F40C      BGE	0x016E
    016D C031      RJMP	0x019F
    016E 3E47      CPI	R20,0xE7
    016F E0E0      LDI	R30,0
    0170 075E      CPC	R21,R30
    0171 F129      BEQ	0x0197
    0172 3E4B      CPI	R20,0xEB
    0173 E0E0      LDI	R30,0
    0174 075E      CPC	R21,R30
    0175 F0C9      BEQ	0x018F
    0176 3E4D      CPI	R20,0xED
    0177 E0E0      LDI	R30,0
    0178 075E      CPC	R21,R30
    0179 F069      BEQ	0x0187
    017A 3E4E      CPI	R20,0xEE
    017B E0E0      LDI	R30,0
    017C 075E      CPC	R21,R30
    017D F009      BEQ	0x017F
    017E C020      RJMP	0x019F
(0054) //  case  0x00: return 0x00;
(0055)   case  0xEE: return 1;
    017F E001      LDI	R16,1
    0180 C01F      RJMP	0x01A0
(0056)   case  0xDE: return 2;
    0181 E002      LDI	R16,2
    0182 C01D      RJMP	0x01A0
(0057)   case  0xBE: return 3;
    0183 E003      LDI	R16,3
    0184 C01B      RJMP	0x01A0
(0058)   case  0x7E: return 4;
    0185 E004      LDI	R16,4
    0186 C019      RJMP	0x01A0
(0059)   case  0xED: return 5;
    0187 E005      LDI	R16,5
    0188 C017      RJMP	0x01A0
(0060)   case  0xDD: return 6;
    0189 E006      LDI	R16,6
    018A C015      RJMP	0x01A0
(0061)   case  0xBD: return 7;
    018B E007      LDI	R16,7
    018C C013      RJMP	0x01A0
(0062)   case  0x7D: return 8;
    018D E008      LDI	R16,0x8
    018E C011      RJMP	0x01A0
(0063)   case  0xEB: return 9;
    018F E009      LDI	R16,0x9
    0190 C00F      RJMP	0x01A0
(0064)   case  0xDB: return 44;
    0191 E20C      LDI	R16,0x2C
    0192 C00D      RJMP	0x01A0
(0065)   case  0xBB: return 55;
    0193 E307      LDI	R16,0x37
    0194 C00B      RJMP	0x01A0
(0066)   case  0x7B: return 66;
    0195 E402      LDI	R16,0x42
    0196 C009      RJMP	0x01A0
(0067)   case  0xE7: return 77;
    0197 E40D      LDI	R16,0x4D
    0198 C007      RJMP	0x01A0
(0068)   case  0xD7: return 88;
    0199 E508      LDI	R16,0x58
    019A C005      RJMP	0x01A0
(0069)   case  0xB7: return 99;
    019B E603      LDI	R16,0x63
    019C C003      RJMP	0x01A0
(0070)   case  0x77: return 100;
    019D E604      LDI	R16,0x64
    019E C001      RJMP	0x01A0
(0071)   default : return 0x00;
    019F 2700      CLR	R16
    01A0 940E052C  CALL	pop_gset1
    01A2 9508      RET
_get_key:
  i                    --> R20
    01A3 940E0529  CALL	push_gset1
(0072)   } 
(0073) }
(0074) 
(0075) /*
(0076) 按键获取函数
(0077)  获取按键信号,其中包含有状态记录及按键去颤抖。
(0078)  有正确按键按下返回相应按键值
(0079)  无正确按键按下返回"0x00"
(0080) */
(0081) unsigned char get_key(void){
(0082)  unsigned char i;
(0083)  static unsigned char j;/*按键记录*/
(0084)  i = key_read();
    01A5 DF69      RCALL	_key_read
    01A6 2F40      MOV	R20,R16
(0085)  if (i == 0x00){/*无有效按键按下*/
    01A7 2300      TST	R16
    01A8 F429      BNE	0x01AE
(0086)   j = 0x00;/*清除按键记录*/
    01A9 2422      CLR	R2
    01AA 92200071  STS	j,R2
(0087)   return 0x00;/*程序退出*/
    01AC 2700      CLR	R16
    01AD C011      RJMP	0x01BF
(0088)   }
(0089)  if (j == 0x00) {/*为新按键*/
    01AE 90200071  LDS	R2,j
    01B0 2022      TST	R2
    01B1 F461      BNE	0x01BE
(0090)   j = i;/*保存本次采样结果*/
    01B2 93400071  STS	j,R20
(0091)   delay_ms(10);/*去按键颤抖*/
    01B4 E00A      LDI	R16,0xA
    01B5 E010      LDI	R17,0
    01B6 DEBD      RCALL	_delay_ms
(0092)   i = key_read();
    01B7 DF57      RCALL	_key_read
    01B8 2F40      MOV	R20,R16
(0093)   if(i == j) {
    01B9 90200071  LDS	R2,j
    01BB 1502      CP	R16,R2
    01BC F409      BNE	0x01BE
(0094)    return i;
    01BD C001      RJMP	0x01BF
(0095)    }
(0096)   }
(0097)  return 0x00;
    01BE 2700      CLR	R16
    01BF 940E052C  CALL	pop_gset1
    01C1 9508      RET
_get_ad:
  hh                   --> Y+1
  ll                   --> R20
  num                  --> R22
    01C2 940E0527  CALL	push_gset2
(0098) }
(0099) 
(0100) 
(0101) /*ADC采样函数,采样第7通道信号,采样分辨率256*/
(0102)  unsigned int get_ad(void) {         //3.69KHZ
(0103)  unsigned char hh,ll;
(0104)  unsigned int num=0;
    01C4 2766      CLR	R22
    01C5 2777      CLR	R23
(0105) // _CLI();
(0106)   asm("cli");
    01C6 94F8      BCLR	7
(0107)   DDRA = 0x00;    /*方向输入*/
    01C7 2422      CLR	R2
    01C8 BA2A      OUT	0x1A,R2
(0108)   PORTA = 0x7F;    /*打开上拉*/
    01C9 E78F      LDI	R24,0x7F
    01CA BB8B      OUT	0x1B,R24
(0109) //  delay_us(1);    //10us
(0110) 
(0111)  
(0112)  ADMUX = 0x47;   /*基准AVCC、10位、通道7*/
    01CB E487      LDI	R24,0x47
    01CC B987      OUT	0x07,R24
(0113)  ADCSRA = 0xC0;   /*使能、开启、4分频*/
    01CD EC80      LDI	R24,0xC0
    01CE B986      OUT	0x06,R24
(0114)  while(!(ADCSRA & (1 << ADIF))); /*等待*/
    01CF 9B34      SBIS	0x06,4
    01D0 CFFE      RJMP	0x01CF
(0115)  ll=ADCL;
    01D1 B144      IN	R20,0x04
(0116)  num = ADCH;
    01D2 B165      IN	R22,0x05
    01D3 2777      CLR	R23
(0117)  num=num*256+ll;
    01D4 E000      LDI	R16,0
    01D5 E011      LDI	R17,1
    01D6 019B      MOVW	R18,R22
    01D7 940E050B  CALL	empy16s
    01D9 01B8      MOVW	R22,R16
    01DA 2E24      MOV	R2,R20
    01DB 2433      CLR	R3
    01DC 0D62      ADD	R22,R2
    01DD 1D73      ADC	R23,R3
(0118)  ADCSRA &= ~(1 << ADIF);  /*清标志*/
    01DE 9834      CBI	0x06,4
(0119)  ADCSRA &= ~(1 << ADEN);  /*关闭转换*/
    01DF 9837      CBI	0x06,7
(0120)  
(0121)  DDRA=0XFF;
    01E0 EF8F      LDI	R24,0xFF
    01E1 BB8A      OUT	0x1A,R24
(0122)  PORTA=0X00;
    01E2 2422      CLR	R2
    01E3 BA2B      OUT	0x1B,R2
(0123)  //SEI();
(0124)   asm("sei");
    01E4 9478      BSET	7
(0125)  return  num;
    01E5 018B      MOVW	R16,R22
    01E6 940E051B  CALL	pop_gset2
    01E8 9508      RET
_lcd_process:
    01E9 940E0529  CALL	push_gset1
    01EB 9725      SBIW	R28,5
(0126)  
(0127) }
(0128) 
(0129) unsigned char lcd_process(void)
(0130) {
(0131) 
(0132)   if( disp_num2<=3.3&&disp_num2>=1)
    01EC E60C      LDI	R16,0x6C
    01ED E010      LDI	R17,0
    01EE 940E0549  CALL	lpm32
    01F0 933A      ST	R19,-Y
    01F1 932A      ST	R18,-Y
    01F2 931A      ST	R17,-Y
    01F3 930A      ST	R16,-Y
    01F4 90400074  LDS	R4,disp_num2+2
    01F6 90500075  LDS	R5,disp_num2+3
    01F8 90200072  LDS	R2,disp_num2
    01FA 90300073  LDS	R3,disp_num2+1
    01FC 925A      ST	R5,-Y
    01FD 924A      ST	R4,-Y
    01FE 923A      ST	R3,-Y
    01FF 922A      ST	R2,-Y
    0200 940E06BD  CALL	cmp32f
    0202 F40C      BGE	0x0204
    0203 C0CB      RJMP	0x02CF
    0204 90400074  LDS	R4,disp_num2+2
    0206 90500075  LDS	R5,disp_num2+3
    0208 90200072  LDS	R2,disp_num2
    020A 90300073  LDS	R3,disp_num2+1
    020C 925A      ST	R5,-Y
    020D 924A      ST	R4,-Y
    020E 923A      ST	R3,-Y
    020F 922A      ST	R2,-Y
    0210 E608      LDI	R16,0x68
    0211 E010      LDI	R17,0
    0212 940E0549  CALL	lpm32
    0214 933A      ST	R19,-Y
    0215 932A      ST	R18,-Y
    0216 931A      ST	R17,-Y
    0217 930A      ST	R16,-Y
    0218 940E06BD  CALL	cmp32f
    021A F40C      BGE	0x021C
    021B C0B3      RJMP	0x02CF
(0133)   {
(0134)   LCD_write_char(1,0,'U');
    021C E585      LDI	R24,0x55
    021D 8388      STD	Y+0,R24
    021E 2722      CLR	R18
    021F E001      LDI	R16,1
    0220 DEA7      RCALL	_LCD_write_char
(0135)   LCD_write_char(2,0,'=');
    0221 E38D      LDI	R24,0x3D
    0222 8388      STD	Y+0,R24
    0223 2722      CLR	R18
    0224 E002      LDI	R16,2
    0225 DEA2      RCALL	_LCD_write_char
(0136)   LCD_write_num(3,0,(disp_num2*100)/100);
    0226 E604      LDI	R16,0x64
    0227 E010      LDI	R17,0
    0228 940E0549  CALL	lpm32
    022A 933A      ST	R19,-Y
    022B 932A      ST	R18,-Y
    022C 931A      ST	R17,-Y
    022D 930A      ST	R16,-Y
    022E 90400074  LDS	R4,disp_num2+2
    0230 90500075  LDS	R5,disp_num2+3
    0232 90200072  LDS	R2,disp_num2
    0234 90300073  LDS	R3,disp_num2+1
    0236 925A      ST	R5,-Y
    0237 924A      ST	R4,-Y
    0238 923A      ST	R3,-Y
    0239 922A      ST	R2,-Y
    023A 940E06EE  CALL	empy32fs
    023C E604      LDI	R16,0x64
    023D E010      LDI	R17,0
    023E 940E0549  CALL	lpm32
    0240 933A      ST	R19,-Y
    0241 932A      ST	R18,-Y
    0242 931A      ST	R17,-Y
    0243 930A      ST	R16,-Y
    0244 940E0663  CALL	div32f
    0246 01FE      MOVW	R30,R28
    0247 8301      STD	Z+1,R16
    0248 8312      STD	Z+2,R17
    0249 8323      STD	Z+3,R18
    024A 8334      STD	Z+4,R19
    024B 01FE      MOVW	R30,R28
    024C 8021      LDD	R2,Z+1
    024D 8032      LDD	R3,Z+2
    024E 8043      LDD	R4,Z+3
    024F 8054      LDD	R5,Z+4
    0250 925A      ST	R5,-Y
    0251 924A      ST	R4,-Y
    0252 923A      ST	R3,-Y
    0253 922A      ST	R2,-Y
    0254 E600      LDI	R16,0x60
    0255 E010      LDI	R17,0
    0256 940E0549  CALL	lpm32
    0258 933A      ST	R19,-Y
    0259 932A      ST	R18,-Y
    025A 931A      ST	R17,-Y
    025B 930A      ST	R16,-Y
    025C 940E06BD  CALL	cmp32f
    025E F0CC      BLT	0x0278
    025F 01FE      MOVW	R30,R28
    0260 8021      LDD	R2,Z+1
    0261 8032      LDD	R3,Z+2
    0262 8043      LDD	R4,Z+3
    0263 8054      LDD	R5,Z+4
    0264 925A      ST	R5,-Y
    0265 924A      ST	R4,-Y
    0266 923A      ST	R3,-Y
    0267 922A      ST	R2,-Y
    0268 E600      LDI	R16,0x60
    0269 E010      LDI	R17,0
    026A 940E0549  CALL	lpm32
    026C 933A      ST	R19,-Y
    026D 932A      ST	R18,-Y
    026E 931A      ST	R17,-Y
    026F 930A      ST	R16,-Y
    0270 940E060A  CALL	sub32f
    0272 940E055D  CALL	fp2int
    0274 01A8      MOVW	R20,R16
    0275 5040      SUBI	R20,0
    0276 4850      SBCI	R21,0x80
    0277 C008      RJMP	0x0280
    0278 01FE      MOVW	R30,R28
    0279 8101      LDD	R16,Z+1
    027A 8112      LDD	R17,Z+2
    027B 8123      LDD	R18,Z+3
    027C 8134      LDD	R19,Z+4
    027D 940E055D  CALL	fp2int
    027F 01A8      MOVW	R20,R16
    0280 8348      STD	Y+0,R20
    0281 2722      CLR	R18
    0282 E003      LDI	R16,3
    0283 DE56      RCALL	_LCD_write_num
(0137)   LCD_write_char(4,0,'.');
    0284 E28E      LDI	R24,0x2E
    0285 8388      STD	Y+0,R24
    0286 2722      CLR	R18
    0287 E004      LDI	R16,4
    0288 DE3F      RCALL	_LCD_write_char
(0138)   LCD_write_num(5,0,(int)(disp_num2*10)%10);
    0289 E50C      LDI	R16,0x5C
    028A E010      LDI	R17,0
    028B 940E0549  CALL	lpm32
    028D 933A      ST	R19,-Y
    028E 932A      ST	R18,-Y
    028F 931A      ST	R17,-Y
    0290 930A      ST	R16,-Y
    0291 90400074  LDS	R4,disp_num2+2
    0293 90500075  LDS	R5,disp_num2+3
    0295 90200072  LDS	R2,disp_num2
    0297 90300073  LDS	R3,disp_num2+1
    0299 925A      ST	R5,-Y
    029A 924A      ST	R4,-Y
    029B 923A      ST	R3,-Y
    029C 922A      ST	R2,-Y
    029D 940E06F1  CALL	empy32f
    029F 940E055D  CALL	fp2int
    02A1 E02A      LDI	R18,0xA
    02A2 E030      LDI	R19,0
    02A3 940E04D1  CALL	mod16s
    02A5 8308      STD	Y+0,R16
    02A6 2722      CLR	R18
    02A7 E005      LDI	R16,5
    02A8 DE31      RCALL	_LCD_write_num
(0139)   LCD_write_num(6,0,(int)(disp_num2*100)%10);
    02A9 E604      LDI	R16,0x64
    02AA E010      LDI	R17,0
    02AB 940E0549  CALL	lpm32
    02AD 933A      ST	R19,-Y
    02AE 932A      ST	R18,-Y
    02AF 931A      ST	R17,-Y
    02B0 930A      ST	R16,-Y
    02B1 90400074  LDS	R4,disp_num2+2
    02B3 90500075  LDS	R5,disp_num2+3
    02B5 90200072  LDS	R2,disp_num2
    02B7 90300073  LDS	R3,disp_num2+1
    02B9 925A      ST	R5,-Y
    02BA 924A      ST	R4,-Y
    02BB 923A      ST	R3,-Y
    02BC 922A      ST	R2,-Y
    02BD 940E06F1  CALL	empy32f

⌨️ 快捷键说明

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