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

📄 adc.lst

📁 atmega128单片机实现模数转换并通过1602液晶显示出结果。
💻 LST
📖 第 1 页 / 共 3 页
字号:
__start:
__text_start:
      52 EFCF      LDI	R28,0xFF
      53 E1D0      LDI	R29,0x10
      54 BFCD      OUT	0x3D,R28
      55 BFDE      OUT	0x3E,R29
      56 51CE      SUBI	R28,0x1E
      57 40D0      SBCI	R29,0
      58 EA0A      LDI	R16,0xAA
      59 8308      STD	Y+0,R16
      5A 2400      CLR	R0
      5B E1E8      LDI	R30,0x18
      5C E0F1      LDI	R31,1
      5D E011      LDI	R17,1
      5E 31E8      CPI	R30,0x18
      5F 07F1      CPC	R31,R17
      60 F011      BEQ	0x0063
      61 9201      ST	R0,Z+
      62 CFFB      RJMP	0x005E
      63 8300      STD	Z+0,R16
      64 E8EC      LDI	R30,0x8C
      65 E0F0      LDI	R31,0
      66 E0A0      LDI	R26,0
      67 E0B1      LDI	R27,1
      68 E010      LDI	R17,0
      69 E000      LDI	R16,0
      6A BF0B      OUT	0x3B,R16
      6B 3AE4      CPI	R30,0xA4
      6C 07F1      CPC	R31,R17
      6D F021      BEQ	0x0072
      6E 95C8      LPM
      6F 9631      ADIW	R30,1
      70 920D      ST	R0,X+
      71 CFF9      RJMP	0x006B
      72 940E 0267 CALL	_main
_exit:
      74 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\wdd\桌面\模数转换\1602.h
(0001) #define uchar unsigned char 
(0002) #define uint unsigned int 
(0003) 
(0004) #define RS 0
(0005) #define RW 1
(0006) #define EN 2
(0007) 
(0008) void s_ms(uint ms)
(0009) {
(0010) 	for(;ms>1;ms--);
_s_ms:
  ms                   --> R16
      75 C002      RJMP	0x0078
      76 5001      SUBI	R16,1
      77 4010      SBCI	R17,0
      78 E081      LDI	R24,1
      79 E090      LDI	R25,0
      7A 1780      CP	R24,R16
      7B 0791      CPC	R25,R17
      7C F3C8      BCS	0x0076
      7D 9508      RET
_busy:
  temp                 --> R20
      7E 934A      ST	R20,-Y
(0011) }	
(0012) 
(0013) //查忙
(0014) void busy(void)
(0015) {
(0016)     uchar temp;
(0017) 	s_ms(500);
      7F EF04      LDI	R16,0xF4
      80 E011      LDI	R17,1
      81 DFF3      RCALL	_s_ms
(0018) 	PORTG&=~(1<<RS);    //RS=0
      82 9180 0065 LDS	R24,0x0065
      84 7F8E      ANDI	R24,0xFE
      85 9380 0065 STS	0x0065,R24
(0019) 	s_ms(500);
      87 EF04      LDI	R16,0xF4
      88 E011      LDI	R17,1
      89 DFEB      RCALL	_s_ms
(0020) 	PORTG|=(1<<RW);     //RW=1
      8A 9180 0065 LDS	R24,0x0065
      8C 6082      ORI	R24,2
      8D 9380 0065 STS	0x0065,R24
(0021) 	s_ms(500);
      8F EF04      LDI	R16,0xF4
      90 E011      LDI	R17,1
      91 DFE3      RCALL	_s_ms
      92 C022      RJMP	0x00B5
(0022) 	while(temp)
(0023) 	{
(0024) 		PORTG|=(1<<EN); //EN=1
      93 9180 0065 LDS	R24,0x0065
      95 6084      ORI	R24,4
      96 9380 0065 STS	0x0065,R24
(0025) 		s_ms(500);
      98 EF04      LDI	R16,0xF4
      99 E011      LDI	R17,1
      9A DFDA      RCALL	_s_ms
(0026) 		DDRA=0x00;      //A口变输入
      9B 2422      CLR	R2
      9C BA2A      OUT	0x1A,R2
(0027) 		PORTA=0xff;     //上拉使能
      9D EF8F      LDI	R24,0xFF
      9E BB8B      OUT	0x1B,R24
(0028) 		s_ms(500);
      9F EF04      LDI	R16,0xF4
      A0 E011      LDI	R17,1
      A1 DFD3      RCALL	_s_ms
(0029) 		temp = PINA&0x80;    //读取A口
      A2 B349      IN	R20,0x19
      A3 7840      ANDI	R20,0x80
(0030) 		s_ms(500);      
      A4 EF04      LDI	R16,0xF4
      A5 E011      LDI	R17,1
      A6 DFCE      RCALL	_s_ms
(0031) 		DDRA=0xff;      
      A7 EF8F      LDI	R24,0xFF
      A8 BB8A      OUT	0x1A,R24
(0032) 		PORTA=0xff;        //A口变输出
      A9 BB8B      OUT	0x1B,R24
(0033) 		s_ms(500);
      AA EF04      LDI	R16,0xF4
      AB E011      LDI	R17,1
      AC DFC8      RCALL	_s_ms
(0034) 		PORTG&=~(1<<EN);   //EN=0
      AD 9180 0065 LDS	R24,0x0065
      AF 7F8B      ANDI	R24,0xFB
      B0 9380 0065 STS	0x0065,R24
(0035) 		s_ms(500);
      B2 EF04      LDI	R16,0xF4
      B3 E011      LDI	R17,1
      B4 DFC0      RCALL	_s_ms
      B5 2344      TST	R20
      B6 F6E1      BNE	0x0093
      B7 9149      LD	R20,Y+
      B8 9508      RET
_writecom:
  com                  --> R10
      B9 92AA      ST	R10,-Y
      BA 2EA0      MOV	R10,R16
(0036) 	}
(0037) }
(0038) 
(0039) //写指令
(0040) void writecom(uchar	com)
(0041) {
(0042) 	busy();
      BB DFC2      RCALL	_busy
(0043) 	s_ms(500);
      BC EF04      LDI	R16,0xF4
      BD E011      LDI	R17,1
      BE DFB6      RCALL	_s_ms
(0044) 	PORTG&=~(1<<RS);   //RS=0
      BF 9180 0065 LDS	R24,0x0065
      C1 7F8E      ANDI	R24,0xFE
      C2 9380 0065 STS	0x0065,R24
(0045) 	s_ms(500);
      C4 EF04      LDI	R16,0xF4
      C5 E011      LDI	R17,1
      C6 DFAE      RCALL	_s_ms
(0046) 	PORTG&=~(1<<RW);   //RW=0
      C7 9180 0065 LDS	R24,0x0065
      C9 7F8D      ANDI	R24,0xFD
      CA 9380 0065 STS	0x0065,R24
(0047) 	s_ms(500);
      CC EF04      LDI	R16,0xF4
      CD E011      LDI	R17,1
      CE DFA6      RCALL	_s_ms
(0048) 	PORTG|=(1<<EN);    //EN=1
      CF 9180 0065 LDS	R24,0x0065
      D1 6084      ORI	R24,4
      D2 9380 0065 STS	0x0065,R24
(0049) 	s_ms(500);
      D4 EF04      LDI	R16,0xF4
      D5 E011      LDI	R17,1
      D6 DF9E      RCALL	_s_ms
(0050) 	PORTA = com;       //输出指令
      D7 BAAB      OUT	0x1B,R10
(0051) 	s_ms(500);
      D8 EF04      LDI	R16,0xF4
      D9 E011      LDI	R17,1
      DA DF9A      RCALL	_s_ms
(0052) 	PORTG&=~(1<<EN);   //EN=0
      DB 9180 0065 LDS	R24,0x0065
      DD 7F8B      ANDI	R24,0xFB
      DE 9380 0065 STS	0x0065,R24
(0053) 	s_ms(500);
      E0 EF04      LDI	R16,0xF4
      E1 E011      LDI	R17,1
      E2 DF92      RCALL	_s_ms
      E3 90A9      LD	R10,Y+
      E4 9508      RET
(0054) }
(0055) 
(0056) //1602初始化
(0057) void	LcdInit(void)
(0058) {
(0059) 	writecom(0x38);
_LcdInit:
      E5 E308      LDI	R16,0x38
      E6 DFD2      RCALL	_writecom
(0060) 	s_ms(1000);
      E7 EE08      LDI	R16,0xE8
      E8 E013      LDI	R17,3
      E9 DF8B      RCALL	_s_ms
(0061) 	writecom(0x01);
      EA E001      LDI	R16,1
      EB DFCD      RCALL	_writecom
(0062) 	s_ms(10000);
      EC E100      LDI	R16,0x10
      ED E217      LDI	R17,0x27
      EE DF86      RCALL	_s_ms
(0063) 	s_ms(1000);
      EF EE08      LDI	R16,0xE8
      F0 E013      LDI	R17,3
      F1 DF83      RCALL	_s_ms
(0064) 	s_ms(1000);
      F2 EE08      LDI	R16,0xE8
      F3 E013      LDI	R17,3
      F4 DF80      RCALL	_s_ms
(0065) 	s_ms(1000);
      F5 EE08      LDI	R16,0xE8
      F6 E013      LDI	R17,3
      F7 DF7D      RCALL	_s_ms
(0066) 	s_ms(1000);
      F8 EE08      LDI	R16,0xE8
      F9 E013      LDI	R17,3
      FA DF7A      RCALL	_s_ms
(0067) 	s_ms(1000);
      FB EE08      LDI	R16,0xE8
      FC E013      LDI	R17,3
      FD DF77      RCALL	_s_ms
(0068) 	s_ms(1000);
      FE EE08      LDI	R16,0xE8
      FF E013      LDI	R17,3
     100 DF74      RCALL	_s_ms
(0069) 	writecom(0x02);
     101 E002      LDI	R16,2
     102 DFB6      RCALL	_writecom
(0070) 	s_ms(1000);
     103 EE08      LDI	R16,0xE8
     104 E013      LDI	R17,3
     105 DF6F      RCALL	_s_ms
(0071) 	writecom(0x06);
     106 E006      LDI	R16,6
     107 DFB1      RCALL	_writecom
(0072) 	s_ms(1000);
     108 EE08      LDI	R16,0xE8
     109 E013      LDI	R17,3
     10A DF6A      RCALL	_s_ms
(0073) 	writecom(0x0c);
     10B E00C      LDI	R16,0xC
     10C DFAC      RCALL	_writecom
(0074) 	s_ms(1000);
     10D EE08      LDI	R16,0xE8
     10E E013      LDI	R17,3
     10F DF65      RCALL	_s_ms
(0075) 	writecom(0x38);	
     110 E308      LDI	R16,0x38
     111 DFA7      RCALL	_writecom
(0076) 	s_ms(1000);
     112 EE08      LDI	R16,0xE8
     113 E013      LDI	R17,3
     114 DF60      RCALL	_s_ms
     115 9508      RET
_writedata:
  data                 --> R10
     116 92AA      ST	R10,-Y
     117 2EA0      MOV	R10,R16
(0077) }	
(0078) 
(0079) //写数据
(0080) void	writedata(uchar data)
(0081) {
(0082) 	busy();
     118 DF65      RCALL	_busy
(0083) 	s_ms(500);
     119 EF04      LDI	R16,0xF4
     11A E011      LDI	R17,1
     11B DF59      RCALL	_s_ms
(0084) 	PORTG|=(1<<RS);   //RS=1
     11C 9180 0065 LDS	R24,0x0065
     11E 6081      ORI	R24,1
     11F 9380 0065 STS	0x0065,R24
(0085) 	s_ms(500);
     121 EF04      LDI	R16,0xF4
     122 E011      LDI	R17,1
     123 DF51      RCALL	_s_ms
(0086) 	PORTG&=~(1<<RW);   //RW=0
     124 9180 0065 LDS	R24,0x0065
     126 7F8D      ANDI	R24,0xFD
     127 9380 0065 STS	0x0065,R24
(0087) 	s_ms(500);
     129 EF04      LDI	R16,0xF4
     12A E011      LDI	R17,1
     12B DF49      RCALL	_s_ms
(0088) 	PORTG|=(1<<EN);    //EN=1
     12C 9180 0065 LDS	R24,0x0065
     12E 6084      ORI	R24,4
     12F 9380 0065 STS	0x0065,R24
(0089) 	s_ms(500);
     131 EF04      LDI	R16,0xF4
     132 E011      LDI	R17,1
     133 DF41      RCALL	_s_ms
(0090) 	PORTA = data;      //输出数据
     134 BAAB      OUT	0x1B,R10
(0091) 	s_ms(500);
     135 EF04      LDI	R16,0xF4
     136 E011      LDI	R17,1
     137 DF3D      RCALL	_s_ms
(0092) 	PORTG&=~(1<<EN);   //EN=0
     138 9180 0065 LDS	R24,0x0065
     13A 7F8B      ANDI	R24,0xFB
     13B 9380 0065 STS	0x0065,R24
(0093) 	s_ms(500);
     13D EF04      LDI	R16,0xF4
     13E E011      LDI	R17,1
     13F DF35      RCALL	_s_ms
     140 90A9      LD	R10,Y+
     141 9508      RET
_readdata:
  temp                 --> R10
     142 92AA      ST	R10,-Y
(0094) }
(0095) 
(0096) 
(0097) //读数据
(0098) uchar	readdata(void)
(0099) {
(0100) 	uchar temp;
(0101) 	busy();
     143 DF3A      RCALL	_busy
(0102) 	s_ms(500);
     144 EF04      LDI	R16,0xF4
     145 E011      LDI	R17,1
     146 DF2E      RCALL	_s_ms
(0103) 	PORTG|=(1<<RS);  //RS=1
     147 9180 0065 LDS	R24,0x0065
     149 6081      ORI	R24,1
     14A 9380 0065 STS	0x0065,R24
(0104) 	s_ms(500);
     14C EF04      LDI	R16,0xF4
     14D E011      LDI	R17,1
     14E DF26      RCALL	_s_ms
(0105) 	PORTG|=(1<<RW);  //RW=1
     14F 9180 0065 LDS	R24,0x0065
     151 6082      ORI	R24,2
     152 9380 0065 STS	0x0065,R24
(0106) 	s_ms(500);
     154 EF04      LDI	R16,0xF4
     155 E011      LDI	R17,1
     156 DF1E      RCALL	_s_ms
(0107) 	PORTG|=(1<<EN);  //EN=1
     157 9180 0065 LDS	R24,0x0065
     159 6084      ORI	R24,4

⌨️ 快捷键说明

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