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

📄 ad转换.lst

📁 基于ATMEGA16的AD转换的C程序源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
__start:
__text_start:
     230 E5CF      LDI	R28,0x5F
     231 E0D4      LDI	R29,4
     232 BFCD      OUT	0x3D,R28
     233 BFDE      OUT	0x3E,R29
     234 51C0      SUBI	R28,0x10
     235 40D0      SBCI	R29,0
     236 EA0A      LDI	R16,0xAA
     237 8308      STD	Y+0,R16
     238 2400      CLR	R0
     239 E6EB      LDI	R30,0x6B
     23A E0F0      LDI	R31,0
     23B E010      LDI	R17,0
     23C 36EE      CPI	R30,0x6E
     23D 07F1      CPC	R31,R17
     23E F011      BEQ	0x0241
     23F 9201      ST	R0,Z+
     240 CFFB      RJMP	0x023C
     241 8300      STD	Z+0,R16
     242 E5E4      LDI	R30,0x54
     243 E0F4      LDI	R31,4
     244 E6A0      LDI	R26,0x60
     245 E0B0      LDI	R27,0
     246 E014      LDI	R17,4
     247 35EF      CPI	R30,0x5F
     248 07F1      CPC	R31,R17
     249 F021      BEQ	0x024E
     24A 95C8      LPM
     24B 9631      ADIW	R30,1
     24C 920D      ST	R0,X+
     24D CFF9      RJMP	0x0247
     24E 940E 0408 CALL	_main
_exit:
     250 CFFF      RJMP	_exit
FILE: D:\垃圾站\00\adc\delay.h
(0001) //#define 	F_CPU 		12000000
(0002) #define 	F_CPU 		11059200
(0003) //#define 	F_CPU 			8000000
(0004) //#define 	F_CPU 			7372800
(0005) //#define 	F_CPU 			4000000
(0006) /*************************************************************************
(0007) 通用延时头文件:
(0008) 			   delay_nus(n)延时n微秒
(0009) 			   delay_nms(n)延时n毫秒
(0010) *************************************************************************/
(0011) #if F_CPU == 12000000
(0012) 	void delay_nus(unsigned int time)
(0013) 	{
(0014) 	 	while (time!=0)
(0015) 		{
(0016) 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
(0017) 			time--;
(0018) 		}
(0019) 	}
(0020) 	void delay_nms(unsigned int time)
(0021) 	{
(0022)  	 	unsigned int i;
(0023) 		while (time!=0)
(0024) 		{
(0025) 		 	for(i=0;i<1740;i++);
(0026) 			time--;
(0027) 		}
(0028) 	}
(0029) #endif
(0030) 
(0031) #if F_CPU == 11059200
(0032) 	void delay_nus(unsigned int time)
(0033) 	{
_delay_nus:
  time                 --> R16
     251 C009      RJMP	0x025B
(0034) 	 	while (time!=0)
(0035) 		{
(0036) 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();
     252 0000      NOP
     253 0000      NOP
     254 0000      NOP
     255 0000      NOP
     256 0000      NOP
     257 0000      NOP
     258 0000      NOP
(0037) 			time--;
     259 5001      SUBI	R16,1
     25A 4010      SBCI	R17,0
     25B 3000      CPI	R16,0
     25C 0701      CPC	R16,R17
     25D F7A1      BNE	0x0252
     25E 9508      RET
_delay_nms:
  i                    --> R20
  time                 --> R16
     25F 934A      ST	R20,-Y
     260 935A      ST	R21,-Y
(0038) 		}
(0039) 	}
(0040) 	void delay_nms(unsigned int time)
(0041) 	{
     261 C00B      RJMP	0x026D
(0042)  	 	unsigned int i;
(0043) 		while (time!=0)
(0044) 		{
(0045) 		 	for(i=0;i<1580;i++);	
     262 2744      CLR	R20
     263 2755      CLR	R21
     264 C002      RJMP	0x0267
     265 5F4F      SUBI	R20,0xFF
     266 4F5F      SBCI	R21,0xFF
     267 324C      CPI	R20,0x2C
     268 E0E6      LDI	R30,6
     269 075E      CPC	R21,R30
     26A F3D0      BCS	0x0265
(0046) 			time--;
     26B 5001      SUBI	R16,1
     26C 4010      SBCI	R17,0
     26D 3000      CPI	R16,0
     26E 0701      CPC	R16,R17
     26F F791      BNE	0x0262
     270 9159      LD	R21,Y+
     271 9149      LD	R20,Y+
     272 9508      RET
_delay:
  i                    --> R10
  n                    --> R16
     273 92AA      ST	R10,-Y
     274 92BA      ST	R11,-Y
FILE: D:\垃圾站\00\adc\lcd.h
(0001) unsigned char a[10]={'0','1','2','3','4','5','6','7','8','9'};
(0002) unsigned char ADtmp,ADbz=0;
(0003) #define LCD_DATAL PORTA&=~BIT(1)
(0004) #define LCD_DATAH PORTA|=BIT(1) 
(0005) #define LCD_CLKL PORTA&=~BIT(3)
(0006) #define LCD_CLKH PORTA|=BIT(3)
(0007) void delay(unsigned char n)
(0008) {	 
(0009) 	 unsigned char i;
(0010)  	 for(i=0;i<n;i++)                //延时
     275 24AA      CLR	R10
     276 C002      RJMP	0x0279
(0011) 	 {asm("nop");}
     277 0000      NOP
     278 94A3      INC	R10
     279 16A0      CP	R10,R16
     27A F3E0      BCS	0x0277
     27B 90B9      LD	R11,Y+
     27C 90A9      LD	R10,Y+
     27D 9508      RET
_lcd_out:
  s                    --> Y,+1
  i                    --> R20
  send_byte            --> R10
     27E 940E 0441 CALL	push_xgset300C
     280 2EA0      MOV	R10,R16
(0012) }
(0013) //*************************************************************************
(0014) 
(0015) //***************************************************************************
(0016) void lcd_out(unsigned char send_byte)
(0017) {    
(0018)     unsigned char i,s;
(0019)  	for (i=0;i<8;i++)
     281 2744      CLR	R20
     282 C009      RJMP	0x028C
(0020) 	{
(0021) 	 if((send_byte&0x80)==0)
     283 FCA7      SBRC	R10,7
     284 C002      RJMP	0x0287
(0022) 	 {
(0023) 	     LCD_DATAL;
     285 98D9      CBI	0x1B,1
(0024) 	 }
     286 C001      RJMP	0x0288
(0025) 	 else
(0026) 	 {
(0027) 	     LCD_DATAH;
     287 9AD9      SBI	0x1B,1
(0028) 	 }      //送数据
(0029) 	 LCD_CLKL;
     288 98DB      CBI	0x1B,3
(0030) 	 LCD_CLKH;
     289 9ADB      SBI	0x1B,3
(0031) 	 send_byte=send_byte<<1;
     28A 0CAA      LSL	R10
     28B 9543      INC	R20
     28C 3048      CPI	R20,0x8
     28D F3A8      BCS	0x0283
(0032) 	}
(0033) 	delay(256);
     28E E000      LDI	R16,0
     28F DFE3      RCALL	_delay
     290 940C 0446 JMP	pop_xgset300C
_WR_dat:
  s                    --> R20
  dat                  --> R22
     292 940E 044B CALL	push_xgsetF000
     294 2F60      MOV	R22,R16
(0034) }
(0035) //***************************************************************************
(0036) 
(0037) void WR_dat(unsigned char dat)
(0038) {
(0039)      unsigned char s;
(0040) 	 s=dat&0xf0;
     295 2F46      MOV	R20,R22
     296 7F40      ANDI	R20,0xF0
(0041) 	 lcd_out(0xfa);
     297 EF0A      LDI	R16,0xFA
     298 DFE5      RCALL	_lcd_out
(0042) 	 lcd_out(s);
     299 2F04      MOV	R16,R20
     29A DFE3      RCALL	_lcd_out
(0043) 	 s=dat&0x0f;
     29B 2F46      MOV	R20,R22
     29C 704F      ANDI	R20,0xF
(0044) 	 s<<=4;
     29D 2F84      MOV	R24,R20
     29E 708F      ANDI	R24,0xF
     29F 9582      SWAP	R24
     2A0 2F48      MOV	R20,R24
(0045) 	 lcd_out(s);
     2A1 2F08      MOV	R16,R24
     2A2 DFDB      RCALL	_lcd_out
     2A3 940C 0450 JMP	pop_xgsetF000
_WR_control:
  s                    --> R20
  dat                  --> R22
     2A5 940E 044B CALL	push_xgsetF000
     2A7 2F60      MOV	R22,R16
(0046) }
(0047) //**************************************************************************
(0048) void WR_control(unsigned char dat)
(0049) {
(0050)      unsigned char s;
(0051) 	 s=dat&0xf0;
     2A8 2F46      MOV	R20,R22
     2A9 7F40      ANDI	R20,0xF0
(0052) 	 lcd_out(0xf8);
     2AA EF08      LDI	R16,0xF8
     2AB DFD2      RCALL	_lcd_out
(0053) 	 lcd_out(s);
     2AC 2F04      MOV	R16,R20
     2AD DFD0      RCALL	_lcd_out
(0054) 	 s=dat&0x0f;
     2AE 2F46      MOV	R20,R22
     2AF 704F      ANDI	R20,0xF
(0055) 	 s<<=4;
     2B0 2F84      MOV	R24,R20
     2B1 708F      ANDI	R24,0xF
     2B2 9582      SWAP	R24
     2B3 2F48      MOV	R20,R24
(0056) 	 lcd_out(s);
     2B4 2F08      MOV	R16,R24
     2B5 DFC8      RCALL	_lcd_out
     2B6 940C 0450 JMP	pop_xgsetF000
(0057) }
(0058) //**************************************************************************
(0059) void lcd_control()
(0060) {
(0061) 	WR_control(0x30);
_lcd_control:
     2B8 E300      LDI	R16,0x30
     2B9 DFEB      RCALL	_WR_control
(0062) 	WR_control(0x0c);
     2BA E00C      LDI	R16,0xC
     2BB DFE9      RCALL	_WR_control
     2BC 9508      RET
_lcd_clear:
  i                    --> R20
     2BD 934A      ST	R20,-Y
     2BE 935A      ST	R21,-Y
(0063) }
(0064) //**************************************************************************
(0065) void lcd_clear()
(0066) {
(0067)   int i;
(0068)   WR_control(0x01);
     2BF E001      LDI	R16,1
     2C0 DFE4      RCALL	_WR_control
(0069)   for(i=0;i<5000;i++)	//	延时5ms
     2C1 2744      CLR	R20
     2C2 2755      CLR	R21
(0070) 	{
(0071) 		asm("nop");
     2C3 0000      NOP
(0072) 		asm("nop");
     2C4 0000      NOP
     2C5 5F4F      SUBI	R20,0xFF
     2C6 4F5F      SBCI	R21,0xFF
     2C7 3848      CPI	R20,0x88
     2C8 E1E3      LDI	R30,0x13
     2C9 075E      CPC	R21,R30
     2CA F3C4      BLT	0x02C3
     2CB 9159      LD	R21,Y+
     2CC 9149      LD	R20,Y+
     2CD 9508      RET
_LCD_address:
  address              --> R20
  y                    --> R22
  x                    --> R10
     2CE 940E 0455 CALL	push_xgsetF00C
     2D0 2F62      MOV	R22,R18
     2D1 2EA0      MOV	R10,R16
(0073) 		
(0074) 	} 
(0075) }
(0076) /*******************************************************/
(0077) /******   函数名称: LCD_set_xy()                  ******/
(0078) /******   功    能: 设置LCD显示坐标               ******/
(0079) /******   参    数: 显示字符串的位置,X:0-15,Y:0-1*****/
(0080) /******   返回值  : 无                            ******/
(0081) /*******************************************************/
(0082) void LCD_address( unsigned char x, unsigned char y )
(0083) {
(0084)  	unsigned char address;
(0085) 	switch(x)
     2D2 2D4A      MOV	R20,R10
     2D3 2755      CLR	R21
     2D4 3040      CPI	R20,0
     2D5 0745      CPC	R20,R21
     2D6 F069      BEQ	0x02E4
     2D7 3041      CPI	R20,1
     2D8 E0E0      LDI	R30,0
     2D9 075E      CPC	R21,R30
     2DA F061      BEQ	0x02E7
     2DB 3042      CPI	R20,2
     2DC E0E0      LDI	R30,0
     2DD 075E      CPC	R21,R30
     2DE F059      BEQ	0x02EA
     2DF 3043      CPI	R20,3
     2E0 E0E0      LDI	R30,0
     2E1 075E      CPC	R21,R30
     2E2 F051      BEQ	0x02ED
     2E3 C00C      RJMP	0x02F0
(0086) 	{
(0087) 	 	case 0:
(0088) 			   address = 0x80 + y+1;		   //计算显示地址
     2E4 2F46      MOV	R20,R22
     2E5 574F      SUBI	R20,0x7F
(0089) 			   break;
     2E6 C00B      RJMP	0x02F2
(0090) 		case 1:
(0091) 			   address = 0x90 + y+1;		   //计算显示地址
     2E7 2F46      MOV	R20,R22
     2E8 564F      SUBI	R20,0x6F
(0092) 			   break;
     2E9 C008      RJMP	0x02F2
(0093) 		case 2:
(0094) 			   address = 0x88 + y+1;		   //计算显示地址
     2EA 2F46      MOV	R20,R22

⌨️ 快捷键说明

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