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

📄 ad转化.lst

📁 我写的L297步进电机的驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0102 F7B9      BNE	0x00FA
    0103 940E01E3  CALL	pop_gset3
    0105 9508      RET
_LCD_write_char:
  data                 --> Y+4
  Y                    --> R22
  X                    --> R20
    0106 940E01EC  CALL	push_gset2
    0108 2F62      MOV	R22,R18
    0109 2F40      MOV	R20,R16
(0108)     }
(0109)       
(0110) }
(0111) 
(0112) void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
(0113) {
(0114)   LCD_set_xy( X, Y ); //写地址
    010A 2F26      MOV	R18,R22
    010B 2F04      MOV	R16,R20
    010C DFD3      RCALL	_LCD_set_xy
(0115)   LCD_write_data( data);
    010D 810C      LDD	R16,Y+4
    010E DFB1      RCALL	_LCD_write_data
    010F 940E01E0  CALL	pop_gset2
    0111 9508      RET
_change:
  p                    --> R20
  i                    --> R22
    0112 940E01EC  CALL	push_gset2
    0114 01A9      MOVW	R20,R18
    0115 01B8      MOVW	R22,R16
FILE: E:\单片机\PROJECT\高精度三维太阳自动跟踪器\程序\传感器控制\main.c
(0001) /*****************************************
(0002) *      基于AD转化程序设计 		   	     *
(0003) * 功    能:AD转化          			 *
(0004) * 时钟频率:内部8M 						 *
(0005) * 设    计:莫锦攀						 *
(0006) * 修改日期:2007年07月04日				 *
(0007) * 编译环境:ICC-AVR6.31					 *
(0008) * 实验环境:M16学习板					 *
(0009) * 使用端口:PC6,PC7,PA4~PA7,PA0 		 *
(0010) *****************************************/
(0011) 
(0012) #include <iom16v.h>
(0013) #include "1602.h"
(0014) #define uchar unsigned char
(0015) #define uint unsigned int
(0016) uchar Data[5]={0,0,0,0,0};//初始值为0000,最后一个0是结束符
(0017) void change(uint i,uchar *p)		 //显示处理
(0018) {p[3]=i%10+48;//个
    0116 E02A      LDI	R18,0xA
    0117 E030      LDI	R19,0
    0118 018B      MOVW	R16,R22
    0119 940E01C4  CALL	mod16u
    011B 01C8      MOVW	R24,R16
    011C 96C0      ADIW	R24,0x30
    011D 01FA      MOVW	R30,R20
    011E 8383      STD	Z+3,R24
(0019)  p[2]=i/10%10+48;//十
    011F E02A      LDI	R18,0xA
    0120 E030      LDI	R19,0
    0121 018B      MOVW	R16,R22
    0122 940E01C6  CALL	div16u
    0124 E02A      LDI	R18,0xA
    0125 E030      LDI	R19,0
    0126 940E01C4  CALL	mod16u
    0128 01C8      MOVW	R24,R16
    0129 96C0      ADIW	R24,0x30
    012A 01FA      MOVW	R30,R20
    012B 8382      STD	Z+2,R24
(0020)  p[1]=i/100%10+48;//百
    012C E624      LDI	R18,0x64
    012D E030      LDI	R19,0
    012E 018B      MOVW	R16,R22
    012F 940E01C6  CALL	div16u
    0131 E02A      LDI	R18,0xA
    0132 E030      LDI	R19,0
    0133 940E01C4  CALL	mod16u
    0135 01C8      MOVW	R24,R16
    0136 96C0      ADIW	R24,0x30
    0137 01FA      MOVW	R30,R20
    0138 8381      STD	Z+1,R24
(0021)  p[0]=i/1000%10+48;//千
    0139 EE28      LDI	R18,0xE8
    013A E033      LDI	R19,3
    013B 018B      MOVW	R16,R22
    013C 940E01C6  CALL	div16u
    013E E02A      LDI	R18,0xA
    013F E030      LDI	R19,0
    0140 940E01C4  CALL	mod16u
    0142 01C8      MOVW	R24,R16
    0143 96C0      ADIW	R24,0x30
    0144 01FA      MOVW	R30,R20
    0145 8380      STD	Z+0,R24
    0146 940E01E0  CALL	pop_gset2
    0148 9508      RET
(0022) }
(0023) 
(0024) uint ADC_convert(void)//AD转换函数,读取采样获得的10位数据
(0025) {
(0026) uint temp1,temp2;
(0027) temp1=(uint)ADCL;
_ADC_convert:
  temp1                --> R18
  temp2                --> R16
    0149 B124      IN	R18,0x04
    014A 2733      CLR	R19
(0028) temp2=(uint)ADCH;
    014B B105      IN	R16,0x05
    014C 2711      CLR	R17
(0029) temp2=(temp2<<8)+temp1;
    014D 0118      MOVW	R2,R16
    014E 2C32      MOV	R3,R2
    014F 2422      CLR	R2
    0150 0E22      ADD	R2,R18
    0151 1E33      ADC	R3,R19
    0152 0181      MOVW	R16,R2
(0030) return temp2;
    0153 9508      RET
_main:
  i                    --> R20
  j                    --> R22
    0154 9722      SBIW	R28,2
(0031) }
(0032) 
(0033) 
(0034) void main(void)
(0035) {uint i,j;
(0036) //uchar a;
(0037) DDRA=0x00;
    0155 2422      CLR	R2
    0156 BA2A      OUT	0x1A,R2
(0038) PORTA=0x01;		//A口为不带上拉输入
    0157 E081      LDI	R24,1
    0158 BB8B      OUT	0x1B,R24
(0039) DDRD=0xFF;
    0159 EF8F      LDI	R24,0xFF
    015A BB81      OUT	0x11,R24
(0040) PORTD=0xff;
    015B BB82      OUT	0x12,R24
(0041) LCD_init();//液晶初始化
    015C DF28      RCALL	_LCD_init
(0042) 
(0043)   ADMUX=(1<<REFS1)|(1<<REFS0);//选择第一通道ADC0,内部REF(2.56V)
    015D EC80      LDI	R24,0xC0
    015E B987      OUT	0x07,R24
(0044)   ADCSR=0xe7;//8M32分频,125k速率,自由模式;启动AD转换器
    015F EE87      LDI	R24,0xE7
    0160 B986      OUT	0x06,R24
(0045)   delay_nms(100);//延迟100ms等待系统稳定后读取数据
    0161 E604      LDI	R16,0x64
    0162 E010      LDI	R17,0
    0163 DF12      RCALL	_delay_nms
    0164 C05C      RJMP	0x01C1
(0046)   
(0047)    while(1)
(0048)    {i=ADC_convert();
    0165 DFE3      RCALL	_ADC_convert
    0166 01A8      MOVW	R20,R16
(0049)    j=0;
    0167 2766      CLR	R22
    0168 2777      CLR	R23
(0050)    change(i,Data);
    0169 E620      LDI	R18,0x60
    016A E030      LDI	R19,0
    016B DFA6      RCALL	_change
(0051)    LCD_write_string(3,0,"ADC by cac");
    016C E784      LDI	R24,0x74
    016D E090      LDI	R25,0
    016E 8399      STD	Y+1,R25
    016F 8388      STD	Y+0,R24
    0170 2722      CLR	R18
    0171 E003      LDI	R16,3
    0172 DF7D      RCALL	_LCD_write_string
(0052)    LCD_write_string(0,1,Data);
    0173 E680      LDI	R24,0x60
    0174 E090      LDI	R25,0
    0175 8399      STD	Y+1,R25
    0176 8388      STD	Y+0,R24
    0177 E021      LDI	R18,1
    0178 2700      CLR	R16
    0179 DF76      RCALL	_LCD_write_string
(0053)    if(i>0x2BC)
    017A EB8C      LDI	R24,0xBC
    017B E092      LDI	R25,2
    017C 1784      CP	R24,R20
    017D 0795      CPC	R25,R21
    017E F4C8      BCC	0x0198
(0054)   { LCD_write_string(6,1,"Forw");
    017F E68F      LDI	R24,0x6F
    0180 E090      LDI	R25,0
    0181 8399      STD	Y+1,R25
    0182 8388      STD	Y+0,R24
    0183 E021      LDI	R18,1
    0184 E006      LDI	R16,6
    0185 DF6A      RCALL	_LCD_write_string
(0055)    PORTD|=(1<<PD1);
    0186 9A91      SBI	0x12,1
    0187 C00A      RJMP	0x0192
(0056)    while(j<=2000)
(0057)    {
(0058)    PORTD|=(1<<PD2);
    0188 9A92      SBI	0x12,2
(0059)    delay_nus(20);   
    0189 E104      LDI	R16,0x14
    018A E010      LDI	R17,0
    018B DED1      RCALL	_delay_nus
(0060)    PORTD&=~(1<<PD2);
    018C 9892      CBI	0x12,2
(0061)    delay_nus(20);
    018D E104      LDI	R16,0x14
    018E E010      LDI	R17,0
    018F DECD      RCALL	_delay_nus
(0062)    j++;
    0190 5F6F      SUBI	R22,0xFF
    0191 4F7F      SBCI	R23,0xFF
    0192 ED80      LDI	R24,0xD0
    0193 E097      LDI	R25,7
    0194 1786      CP	R24,R22
    0195 0797      CPC	R25,R23
    0196 F788      BCC	0x0188
(0063)    }
(0064)    }
    0197 C029      RJMP	0x01C1
(0065)    else if(i<0xC8&&i>0xAA)
    0198 3C48      CPI	R20,0xC8
    0199 E0E0      LDI	R30,0
    019A 075E      CPC	R21,R30
    019B F4F0      BCC	0x01BA
    019C EA8A      LDI	R24,0xAA
    019D E090      LDI	R25,0
    019E 1784      CP	R24,R20
    019F 0795      CPC	R25,R21
    01A0 F4C8      BCC	0x01BA
(0066)    {LCD_write_string(6,1,"Back");
    01A1 E68A      LDI	R24,0x6A
    01A2 E090      LDI	R25,0
    01A3 8399      STD	Y+1,R25
    01A4 8388      STD	Y+0,R24
    01A5 E021      LDI	R18,1
    01A6 E006      LDI	R16,6
    01A7 DF48      RCALL	_LCD_write_string
(0067)    PORTD&=~(1<<PD1);
    01A8 9891      CBI	0x12,1
    01A9 C00A      RJMP	0x01B4
(0068)    while(j<=2000)
(0069)    {
(0070)    PORTD|=(1<<PD2);
    01AA 9A92      SBI	0x12,2
(0071)    delay_nus(20);   
    01AB E104      LDI	R16,0x14
    01AC E010      LDI	R17,0
    01AD DEAF      RCALL	_delay_nus
(0072)    PORTD&=~(1<<PD2);
    01AE 9892      CBI	0x12,2
(0073)    delay_nus(20);
    01AF E104      LDI	R16,0x14
    01B0 E010      LDI	R17,0
    01B1 DEAB      RCALL	_delay_nus
(0074)    j++;
    01B2 5F6F      SUBI	R22,0xFF
    01B3 4F7F      SBCI	R23,0xFF
    01B4 ED80      LDI	R24,0xD0
    01B5 E097      LDI	R25,7
    01B6 1786      CP	R24,R22
    01B7 0797      CPC	R25,R23
    01B8 F788      BCC	0x01AA
(0075)    }
(0076)    }
    01B9 C007      RJMP	0x01C1
(0077)    else 
(0078)    LCD_write_string(6,1,"Stop");
FILE: <library>
    01BA E685      LDI	R24,0x65
    01BB E090      LDI	R25,0
    01BC 8399      STD	Y+1,R25
    01BD 8388      STD	Y+0,R24
    01BE E021      LDI	R18,1
    01BF E006      LDI	R16,6
    01C0 DF2F      RCALL	_LCD_write_string
    01C1 CFA3      RJMP	0x0165
    01C2 9622      ADIW	R28,2
    01C3 9508      RET
mod16u:
    01C4 9468      BSET	6
    01C5 C001      RJMP	xdiv16u
div16u:
    01C6 94E8      BCLR	6
xdiv16u:
    01C7 92EA      ST	R14,-Y
    01C8 92FA      ST	R15,-Y
    01C9 938A      ST	R24,-Y
    01CA 24EE      CLR	R14
    01CB 24FF      CLR	R15
    01CC E180      LDI	R24,0x10
    01CD 0F00      LSL	R16
    01CE 1F11      ROL	R17
    01CF 1CEE      ROL	R14
    01D0 1CFF      ROL	R15
    01D1 16E2      CP	R14,R18
    01D2 06F3      CPC	R15,R19
    01D3 F018      BCS	0x01D7
    01D4 1AE2      SUB	R14,R18
    01D5 0AF3      SBC	R15,R19
    01D6 9503      INC	R16
    01D7 958A      DEC	R24
    01D8 F7A1      BNE	0x01CD
    01D9 F416      BRTC	0x01DC
    01DA 2D0E      MOV	R16,R14
    01DB 2D1F      MOV	R17,R15
    01DC 9189      LD	R24,Y+
    01DD 90F9      LD	R15,Y+
    01DE 90E9      LD	R14,Y+
    01DF 9508      RET
pop_gset2:
    01E0 E0E2      LDI	R30,2
    01E1 940C01F2  JMP	pop
pop_gset3:
    01E3 E0E4      LDI	R30,4
    01E4 940C01F2  JMP	pop
push_gset5:
    01E6 92FA      ST	R15,-Y
    01E7 92EA      ST	R14,-Y
push_gset4:
    01E8 92DA      ST	R13,-Y
    01E9 92CA      ST	R12,-Y
push_gset3:
    01EA 92BA      ST	R11,-Y
    01EB 92AA      ST	R10,-Y
push_gset2:
    01EC 937A      ST	R23,-Y
    01ED 936A      ST	R22,-Y
push_gset1:
    01EE 935A      ST	R21,-Y
    01EF 934A      ST	R20,-Y
    01F0 9508      RET
pop_gset1:
    01F1 E0E1      LDI	R30,1
pop:
    01F2 9149      LD	R20,Y+
    01F3 9159      LD	R21,Y+
    01F4 FDE0      SBRC	R30,0
    01F5 9508      RET
    01F6 9169      LD	R22,Y+
    01F7 9179      LD	R23,Y+
    01F8 FDE1      SBRC	R30,1
    01F9 9508      RET
    01FA 90A9      LD	R10,Y+
    01FB 90B9      LD	R11,Y+
    01FC FDE2      SBRC	R30,2
    01FD 9508      RET
    01FE 90C9      LD	R12,Y+
    01FF 90D9      LD	R13,Y+
    0200 FDE3      SBRC	R30,3
    0201 9508      RET
    0202 90E9      LD	R14,Y+
    0203 90F9      LD	R15,Y+
    0204 9508      RET

⌨️ 快捷键说明

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