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

📄 dac.lst

📁 ATMEL AVR MEGA8 MCU DAC 驱动控制源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0140 92200154  STS	adc_mux,R2
(0060)  uart_init();
    0142 D090      RCALL	_uart_init
(0061)  timer1_init();
    0143 DF9B      RCALL	_timer1_init
(0062)  adc_init();
    0144 DF33      RCALL	_adc_init
(0063)  //GICR  = 0xC0;//int0,int1中断使能
(0064)  SEI();
    0145 9478      BSET	7
(0065)  EIMSK=3;
    0146 E083      LDI	R24,3
    0147 BB8D      OUT	0x1D,R24
(0066) // EICRA=0;
(0067)  adc_rel=0;
    0148 2422      CLR	R2
    0149 2433      CLR	R3
    014A 92300156  STS	adc_rel+1,R3
    014C 92200155  STS	adc_rel,R2
(0068)  puts("广州天河双龙电子公司");
    014E E30D      LDI	R16,0x3D
    014F E011      LDI	R17,1
    0150 D070      RCALL	_puts
(0069)  puts("HTTP://WWW.SL.COM.CN");
    0151 E208      LDI	R16,0x28
    0152 E011      LDI	R17,1
    0153 D06D      RCALL	_puts
(0070) puts("MEGA48开发板DAC测试程序");
    0154 E100      LDI	R16,0x10
    0155 E011      LDI	R17,1
    0156 D06A      RCALL	_puts
    0157 C059      RJMP	0x01B1
(0071) 
(0072)  while(1)
(0073)     {
(0074) 	 i=getchar();
    0158 D061      RCALL	_getchar
    0159 2EA0      MOV	R10,R16
(0075) 	 switch (i)
    015A 2D4A      MOV	R20,R10
    015B 2755      CLR	R21
    015C 344D      CPI	R20,0x4D
    015D E0E0      LDI	R30,0
    015E 075E      CPC	R21,R30
    015F F409      BNE	0x0161
    0160 C03C      RJMP	0x019D
    0161 344F      CPI	R20,0x4F
    0162 E0E0      LDI	R30,0
    0163 075E      CPC	R21,R30
    0164 F161      BEQ	0x0191
    0165 3542      CPI	R20,0x52
    0166 E0E0      LDI	R30,0
    0167 075E      CPC	R21,R30
    0168 F409      BNE	0x016A
    0169 C039      RJMP	0x01A3
    016A 3543      CPI	R20,0x53
    016B E0E0      LDI	R30,0
    016C 075E      CPC	R21,R30
    016D F029      BEQ	0x0173
    016E 3544      CPI	R20,0x54
    016F E0E0      LDI	R30,0
    0170 075E      CPC	R21,R30
    0171 F029      BEQ	0x0177
    0172 C03E      RJMP	0x01B1
(0076) 	  {
(0077) 	   case 'S'://MEGA8 DAC程序ID
(0078) 	          {
(0079) 			   puts("DAC TEST ver1.0");
    0173 E000      LDI	R16,0
    0174 E011      LDI	R17,1
    0175 D04B      RCALL	_puts
(0080) 			   break;			   
    0176 C03A      RJMP	0x01B1
(0081) 			  }
(0082) 	   case 'T'://调节输出电压
(0083) 	          {
(0084) 			   temp=getchar();
    0177 D042      RCALL	_getchar
    0178 2F60      MOV	R22,R16
    0179 2777      CLR	R23
(0085) 			   temp=temp<<8;
    017A 2F76      MOV	R23,R22
    017B 2766      CLR	R22
(0086) 			   temp|=getchar();
    017C D03D      RCALL	_getchar
    017D 2E20      MOV	R2,R16
    017E 2433      CLR	R3
    017F 2962      OR	R22,R2
    0180 2973      OR	R23,R3
(0087) 			   if (temp<0x400)
    0181 3060      CPI	R22,0
    0182 E0E4      LDI	R30,4
    0183 077E      CPC	R23,R30
    0184 F428      BCC	0x018A
(0088) 			   	  OCR1A=temp;
    0185 93700089  STS	0x89,R23
    0187 93600088  STS	0x88,R22
    0189 C027      RJMP	0x01B1
(0089) 			   else
(0090) 			      OCR1A=0x3ff;	   
    018A EF8F      LDI	R24,0xFF
    018B E093      LDI	R25,3
    018C 93900089  STS	0x89,R25
    018E 93800088  STS	0x88,R24
(0091) 			   break;
    0190 C020      RJMP	0x01B1
(0092) 			  }
(0093) 	   case 'O'://读取OCR1A寄存器值
(0094) 	           {
(0095) 			    temp=OCR1A;
    0191 91600088  LDS	R22,0x88
    0193 91700089  LDS	R23,0x89
(0096) 				putchar(temp/256);
    0195 018B      MOVW	R16,R22
    0196 2F01      MOV	R16,R17
    0197 2711      CLR	R17
    0198 D01A      RCALL	_putchar
(0097) 				putchar(temp%256);
    0199 2F06      MOV	R16,R22
    019A 7010      ANDI	R17,0
    019B D017      RCALL	_putchar
(0098) 			    break;
    019C C014      RJMP	0x01B1
(0099) 	           }		  
(0100) 	   case 'M'://设置ADC工作通道
(0101) 	           {
(0102) 			    adc_mux=getchar()&0x03;
    019D D01C      RCALL	_getchar
    019E 2F80      MOV	R24,R16
    019F 7083      ANDI	R24,3
    01A0 93800154  STS	adc_mux,R24
(0103) 				break;
    01A2 C00E      RJMP	0x01B1
(0104) 			   }		  
(0105) 	   case 'R'://读取ADC通道及ADC转换结果
(0106) 	           {			   
(0107) 			    putchar(adc_mux);				
    01A3 91000154  LDS	R16,adc_mux
    01A5 D00D      RCALL	_putchar
(0108) 	            putchar(adc_old/256);
    01A6 91000157  LDS	R16,adc_old
    01A8 91100158  LDS	R17,adc_old+1
    01AA 2F01      MOV	R16,R17
    01AB 2711      CLR	R17
    01AC D006      RCALL	_putchar
(0109) 				putchar(adc_old%256);
    01AD 91000157  LDS	R16,adc_old
    01AF 7010      ANDI	R17,0
    01B0 D002      RCALL	_putchar
    01B1 CFA6      RJMP	0x0158
    01B2 9508      RET
FILE: C:\调试程序\mega48\DAC\uart.c
(0001) //  1、使用ICCAVR的终端调试窗口(Terminal),进行通信调试。
(0002) //  2、对ICCAVR的终端调试窗口进行设置,设置串口为com1或com2,
(0003) //     通信波特率为19200(Tools->Environment Options...)。
(0004) //  3、将PC屏幕光标定位于调试窗口中。
(0005) #include <iom48v.h>
(0006) #define fosc 8000000 //晶振8MHZ
(0007) #define baud 19200	 //波特率
(0008) /*  		字符输出函数 		 */
(0009) void putchar(unsigned char c)
(0010) 	{	 
(0011)      while (!(UCSR0A&(1<<UDRE0)));
_putchar:
  c                    --> R16
    01B3 902000C0  LDS	R2,0xC0
    01B5 FE25      SBRS	R2,5
    01B6 CFFC      RJMP	_putchar
(0012) 	 UDR0=c;    
    01B7 930000C6  STS	0xC6,R16
    01B9 9508      RET
(0013) 	}
(0014) /*  		字符输入函数 		 */	
(0015) unsigned char getchar(void)
(0016)   	{
(0017) 	 while(!(UCSR0A& (1<<RXC0)));
_getchar:
    01BA 902000C0  LDS	R2,0xC0
    01BC FE27      SBRS	R2,7
    01BD CFFC      RJMP	_getchar
(0018)      return UDR0;
    01BE 910000C6  LDS	R16,0xC6
    01C0 9508      RET
_puts:
  s                    --> R20
    01C1 D026      RCALL	push_gset1
    01C2 01A8      MOVW	R20,R16
(0019) 	}		
(0020) /*			字符串输出函数	   	 */	
(0021) void puts(char *s)
(0022) 	{
    01C3 C005      RJMP	0x01C9
(0023) 	while (*s)
(0024) 		{
(0025) 		putchar(*s);
    01C4 01FA      MOVW	R30,R20
    01C5 8100      LDD	R16,Z+0
    01C6 DFEC      RCALL	_putchar
(0026) 		s++;
    01C7 5F4F      SUBI	R20,0xFF
    01C8 4F5F      SBCI	R21,0xFF
    01C9 01FA      MOVW	R30,R20
    01CA 8020      LDD	R2,Z+0
    01CB 2022      TST	R2
    01CC F7B9      BNE	0x01C4
(0027) 		}	
(0028)     putchar(0x0a);//回车换行
    01CD E00A      LDI	R16,0xA
    01CE DFE4      RCALL	_putchar
(0029) 	putchar(0x0d);
    01CF E00D      LDI	R16,0xD
    01D0 DFE2      RCALL	_putchar
    01D1 D019      RCALL	pop_gset1
    01D2 9508      RET
(0030) 	}
(0031) /*			UART初始化				*/	
(0032) void uart_init(void)
(0033) {
(0034)  UCSR0B=(1<<RXEN0)|(1<<TXEN0);//允许发送和接收
_uart_init:
    01D3 E188      LDI	R24,0x18
    01D4 938000C1  STS	0xC1,R24
(0035)  UBRR0L=(fosc/16/(baud+1))%256;
    01D6 E18A      LDI	R24,0x1A
    01D7 938000C4  STS	0xC4,R24
(0036)  UBRR0H=(fosc/16/(baud+1))/256;
    01D9 2422      CLR	R2
    01DA 922000C5  STS	0xC5,R2
(0037)  UCSR0C=(0<<UMSEL01)|(0<<UMSEL00)|(1<<UCSZ01)|(1<<UCSZ00);//8位数据+1位STOP位
FILE: <library>
    01DC E086      LDI	R24,6
    01DD 938000C2  STS	0xC2,R24
    01DF 9508      RET
push_gset5:
    01E0 92FA      ST	R15,-Y
    01E1 92EA      ST	R14,-Y
push_gset4:
    01E2 92DA      ST	R13,-Y
    01E3 92CA      ST	R12,-Y
push_gset3:
    01E4 92BA      ST	R11,-Y
    01E5 92AA      ST	R10,-Y
push_gset2:
    01E6 937A      ST	R23,-Y
    01E7 936A      ST	R22,-Y
push_gset1:
    01E8 935A      ST	R21,-Y
    01E9 934A      ST	R20,-Y
    01EA 9508      RET
pop_gset1:
    01EB E0E1      LDI	R30,1
pop:
    01EC 9149      LD	R20,Y+
    01ED 9159      LD	R21,Y+
    01EE FDE0      SBRC	R30,0
    01EF 9508      RET
    01F0 9169      LD	R22,Y+
    01F1 9179      LD	R23,Y+
    01F2 FDE1      SBRC	R30,1
    01F3 9508      RET
    01F4 90A9      LD	R10,Y+
    01F5 90B9      LD	R11,Y+
    01F6 FDE2      SBRC	R30,2
    01F7 9508      RET
    01F8 90C9      LD	R12,Y+
    01F9 90D9      LD	R13,Y+
    01FA FDE3      SBRC	R30,3
    01FB 9508      RET
    01FC 90E9      LD	R14,Y+
    01FD 90F9      LD	R15,Y+
    01FE 9508      RET
push_lset:
    01FF 93FA      ST	R31,-Y
    0200 93EA      ST	R30,-Y
    0201 93BA      ST	R27,-Y
    0202 93AA      ST	R26,-Y
    0203 939A      ST	R25,-Y
    0204 938A      ST	R24,-Y
    0205 933A      ST	R19,-Y
    0206 932A      ST	R18,-Y
    0207 931A      ST	R17,-Y
    0208 930A      ST	R16,-Y
    0209 929A      ST	R9,-Y
    020A 928A      ST	R8,-Y
    020B 927A      ST	R7,-Y
    020C 926A      ST	R6,-Y
    020D 925A      ST	R5,-Y
    020E 924A      ST	R4,-Y
    020F 923A      ST	R3,-Y
    0210 922A      ST	R2,-Y
    0211 921A      ST	R1,-Y
    0212 920A      ST	R0,-Y
    0213 B60F      IN	R0,0x3F
    0214 920A      ST	R0,-Y
    0215 9508      RET
pop_lset:
    0216 9009      LD	R0,Y+
    0217 BE0F      OUT	0x3F,R0
    0218 9009      LD	R0,Y+
    0219 9019      LD	R1,Y+
    021A 9029      LD	R2,Y+
    021B 9039      LD	R3,Y+
    021C 9049      LD	R4,Y+
    021D 9059      LD	R5,Y+
    021E 9069      LD	R6,Y+
    021F 9079      LD	R7,Y+
    0220 9089      LD	R8,Y+
    0221 9099      LD	R9,Y+
    0222 9109      LD	R16,Y+
    0223 9119      LD	R17,Y+
    0224 9129      LD	R18,Y+
    0225 9139      LD	R19,Y+
    0226 9189      LD	R24,Y+
    0227 9199      LD	R25,Y+
    0228 91A9      LD	R26,Y+
    0229 91B9      LD	R27,Y+
    022A 91E9      LD	R30,Y+
    022B 91F9      LD	R31,Y+
    022C 9508      RET
lsr16:
    022D 2322      TST	R18
    022E F021      BEQ	0x0233
    022F 9516      LSR	R17
    0230 9507      ROR	R16
    0231 952A      DEC	R18
    0232 CFFA      RJMP	lsr16
    0233 9508      RET

⌨️ 快捷键说明

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