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

📄 ad.lst

📁 cvavr ad m48 ad实验
💻 LST
字号:
__start:
__text_start:
    002F E5CF      LDI	R28,0x5F
    0030 E0D4      LDI	R29,4
    0031 BFCD      OUT	0x3D,R28
    0032 BFDE      OUT	0x3E,R29
    0033 51C0      SUBI	R28,0x10
    0034 40D0      SBCI	R29,0
    0035 EA0A      LDI	R16,0xAA
    0036 8308      STD	Y+0,R16
    0037 2400      CLR	R0
    0038 E6EA      LDI	R30,0x6A
    0039 E0F0      LDI	R31,0
    003A E010      LDI	R17,0
    003B 36EA      CPI	R30,0x6A
    003C 07F1      CPC	R31,R17
    003D F011      BEQ	0x0040
    003E 9201      ST	R0,Z+
    003F CFFB      RJMP	0x003B
    0040 8300      STD	Z+0,R16
    0041 E5E4      LDI	R30,0x54
    0042 E0F0      LDI	R31,0
    0043 E6A0      LDI	R26,0x60
    0044 E0B0      LDI	R27,0
    0045 E010      LDI	R17,0
    0046 35EE      CPI	R30,0x5E
    0047 07F1      CPC	R31,R17
    0048 F021      BEQ	0x004D
    0049 95C8      LPM
    004A 9631      ADIW	R30,1
    004B 920D      ST	R0,X+
    004C CFF9      RJMP	0x0046
    004D 940E009B  CALL	_main
_exit:
    004F CFFF      RJMP	_exit
_delay_ms:
  i                    --> R20
  time                 --> R16
    0050 940E00C7  CALL	push_gset1
FILE: D:\AVR\我的程序\AD转换实验\cfg.h
(0001) /*******************************
(0002) *程序名称:各功能函数
(0003) *设    计:萧联珠
(0004) *日    期:2007-11-20
(0005) ********************************/
(0006) #include <iom16v.h>
(0007) unsigned char disp[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
(0008) 
(0009) /*延时子程序*/
(0010) void delay_ms(int time)
(0011) {
(0012)  int i;
(0013)  for(;time>0;time--)
    0052 C00A      RJMP	0x005D
(0014)   for(i=0;i<1000;i++);
    0053 2744      CLR	R20
    0054 2755      CLR	R21
    0055 5F4F      SUBI	R20,0xFF
    0056 4F5F      SBCI	R21,0xFF
    0057 3E48      CPI	R20,0xE8
    0058 E0E3      LDI	R30,3
    0059 075E      CPC	R21,R30
    005A F3D4      BLT	0x0055
    005B 5001      SUBI	R16,1
    005C 4010      SBCI	R17,0
    005D 2422      CLR	R2
    005E 2433      CLR	R3
    005F 1620      CP	R2,R16
    0060 0631      CPC	R3,R17
    0061 F38C      BLT	0x0053
    0062 940E00CA  CALL	pop_gset1
    0064 9508      RET
(0015) }
(0016) 
(0017) /*SPI接口初始化*/
(0018) void SPI_MasterInit(void) {
(0019) 
(0020) 	DDRB |= (1<<PB5) | (1<<PB7);		/* 设置MOSI 和SCK 为输出,其他为输入 */
_SPI_MasterInit:
    0065 B387      IN	R24,0x17
    0066 6A80      ORI	R24,0xA0
    0067 BB87      OUT	0x17,R24
(0021) 	SPCR = (1<<SPE) | (1<<MSTR)
    0068 E583      LDI	R24,0x53
    0069 B98D      OUT	0x0D,R24
    006A 9508      RET
(0022) 		| (1<<SPR1) | (1<<SPR0);		/* 使能SPI主机模式,设置时钟速率为fck/128 */
(0023) }
(0024) 
(0025) /*SPI数据发送*/
(0026) void SPI_MasterTransmit(unsigned char i) 
(0027) {
(0028) 	
(0029) 	SPDR = i;							/* 启动数据传输 */
_SPI_MasterTransmit:
  i                    --> R16
    006B B90F      OUT	0x0F,R16
(0030) 	while (!(SPSR & (1<<SPIF)));	    /* 等待传输结束 */
    006C 9B77      SBIS	0x0E,7
    006D CFFE      RJMP	0x006C
    006E 9508      RET
_SPI_595_Out:
  i                    --> R20
    006F 940E00C7  CALL	push_gset1
    0071 2F40      MOV	R20,R16
(0031) }
(0032) 
(0033) /*595数据输出*/
(0034) void SPI_595_Out(unsigned char i)
(0035) {
(0036) 	PORTB &= ~(1 << 4);					/*准备锁存*/
    0072 98C4      CBI	0x18,4
(0037) 	SPI_MasterTransmit(i);
    0073 2F04      MOV	R16,R20
    0074 DFF6      RCALL	_SPI_MasterTransmit
(0038) 	PORTB |= (1 << 4);					/*锁存数据*/
    0075 9AC4      SBI	0x18,4
    0076 940E00CA  CALL	pop_gset1
    0078 9508      RET
(0039) }
(0040) 
(0041) /*ADC采样函数,采样第7通道信号,采样分辨率256*/
(0042) void ADC_init() 
(0043) {
(0044) 	ADMUX=0x67;			/*基准AVCC、左对齐、通道7*/
_ADC_init:
    0079 E687      LDI	R24,0x67
    007A B987      OUT	0x07,R24
(0045) 	SREG=0x80;
    007B E880      LDI	R24,0x80
    007C BF8F      OUT	0x3F,R24
(0046) 	ADCSRA=0xCA;			/*使能、开启、4分频*/
    007D EC8A      LDI	R24,0xCA
    007E B986      OUT	0x06,R24
    007F 9508      RET
_adc_int:
  ad_result            --> R20
    0080 940E00DE  CALL	push_lset
    0082 940E00C7  CALL	push_gset1
(0047) }
(0048) 
(0049) /*AD中断服务程序*/
(0050) #pragma interrupt_handler adc_int:15
(0051) void adc_int()
(0052) {
(0053)   unsigned int ad_result;
(0054)   ad_result= (unsigned int)ADCH;
    0084 B145      IN	R20,0x05
    0085 2755      CLR	R21
(0055)   SPI_595_Out(disp[ad_result/100]);
    0086 E624      LDI	R18,0x64
    0087 E030      LDI	R19,0
    0088 018A      MOVW	R16,R20
    0089 940E00A5  CALL	div16u
    008B 01F8      MOVW	R30,R16
    008C E680      LDI	R24,0x60
    008D E090      LDI	R25,0
    008E 0FE8      ADD	R30,R24
    008F 1FF9      ADC	R31,R25
    0090 8100      LDD	R16,Z+0
    0091 DFDD      RCALL	_SPI_595_Out
(0056)   
(0057)   ADMUX=0x67;			/*基准AVCC、左对齐、通道7*/
    0092 E687      LDI	R24,0x67
    0093 B987      OUT	0x07,R24
(0058)   ADCSRA=0xCA;			/*使能、开启、4分频*/
    0094 EC8A      LDI	R24,0xCA
    0095 B986      OUT	0x06,R24
    0096 940E00CA  CALL	pop_gset1
    0098 940E00F5  CALL	pop_lset
    009A 9518      RETI
FILE: D:\AVR\我的程序\AD转换实验\main.c
(0001) /***********************************
(0002) *实验目的:熟悉ADC操作编程
(0003) *设    计:萧联珠
(0004) *日    期:2007-11-20
(0005) ************************************/
(0006) #include <iom16v.h>
(0007) #include "cfg.h"
(0008) 
(0009) void main(void) 
(0010) {
(0011) 	DDRB = 0xFF;			/*PB口设置为输出*/
_main:
    009B EF8F      LDI	R24,0xFF
    009C BB87      OUT	0x17,R24
(0012) 	PORTB = 0xF0;			/*选通数码管*/
    009D EF80      LDI	R24,0xF0
    009E BB88      OUT	0x18,R24
(0013) 
(0014) 	SPI_MasterInit();
    009F DFC5      RCALL	_SPI_MasterInit
(0015) 	ADC_init();
    00A0 DFD8      RCALL	_ADC_init
(0016) 	
(0017) 	while (1);
FILE: <library>
    00A1 CFFF      RJMP	0x00A1
    00A2 9508      RET
mod16u:
    00A3 9468      BSET	6
    00A4 C001      RJMP	xdiv16u
div16u:
    00A5 94E8      BCLR	6
xdiv16u:
    00A6 92EA      ST	R14,-Y
    00A7 92FA      ST	R15,-Y
    00A8 938A      ST	R24,-Y
    00A9 24EE      CLR	R14
    00AA 24FF      CLR	R15
    00AB E180      LDI	R24,0x10
    00AC 0F00      LSL	R16
    00AD 1F11      ROL	R17
    00AE 1CEE      ROL	R14
    00AF 1CFF      ROL	R15
    00B0 16E2      CP	R14,R18
    00B1 06F3      CPC	R15,R19
    00B2 F018      BCS	0x00B6
    00B3 1AE2      SUB	R14,R18
    00B4 0AF3      SBC	R15,R19
    00B5 9503      INC	R16
    00B6 958A      DEC	R24
    00B7 F7A1      BNE	0x00AC
    00B8 F416      BRTC	0x00BB
    00B9 2D0E      MOV	R16,R14
    00BA 2D1F      MOV	R17,R15
    00BB 9189      LD	R24,Y+
    00BC 90F9      LD	R15,Y+
    00BD 90E9      LD	R14,Y+
    00BE 9508      RET
push_gset5:
    00BF 92FA      ST	R15,-Y
    00C0 92EA      ST	R14,-Y
push_gset4:
    00C1 92DA      ST	R13,-Y
    00C2 92CA      ST	R12,-Y
push_gset3:
    00C3 92BA      ST	R11,-Y
    00C4 92AA      ST	R10,-Y
push_gset2:
    00C5 937A      ST	R23,-Y
    00C6 936A      ST	R22,-Y
push_gset1:
    00C7 935A      ST	R21,-Y
    00C8 934A      ST	R20,-Y
    00C9 9508      RET
pop_gset1:
    00CA E0E1      LDI	R30,1
pop:
    00CB 9149      LD	R20,Y+
    00CC 9159      LD	R21,Y+
    00CD FDE0      SBRC	R30,0
    00CE 9508      RET
    00CF 9169      LD	R22,Y+
    00D0 9179      LD	R23,Y+
    00D1 FDE1      SBRC	R30,1
    00D2 9508      RET
    00D3 90A9      LD	R10,Y+
    00D4 90B9      LD	R11,Y+
    00D5 FDE2      SBRC	R30,2
    00D6 9508      RET
    00D7 90C9      LD	R12,Y+
    00D8 90D9      LD	R13,Y+
    00D9 FDE3      SBRC	R30,3
    00DA 9508      RET
    00DB 90E9      LD	R14,Y+
    00DC 90F9      LD	R15,Y+
    00DD 9508      RET
push_lset:
    00DE 93FA      ST	R31,-Y
    00DF 93EA      ST	R30,-Y
    00E0 93BA      ST	R27,-Y
    00E1 93AA      ST	R26,-Y
    00E2 939A      ST	R25,-Y
    00E3 938A      ST	R24,-Y
    00E4 933A      ST	R19,-Y
    00E5 932A      ST	R18,-Y
    00E6 931A      ST	R17,-Y
    00E7 930A      ST	R16,-Y
    00E8 929A      ST	R9,-Y
    00E9 928A      ST	R8,-Y
    00EA 927A      ST	R7,-Y
    00EB 926A      ST	R6,-Y
    00EC 925A      ST	R5,-Y
    00ED 924A      ST	R4,-Y
    00EE 923A      ST	R3,-Y
    00EF 922A      ST	R2,-Y
    00F0 921A      ST	R1,-Y
    00F1 920A      ST	R0,-Y
    00F2 B60F      IN	R0,0x3F
    00F3 920A      ST	R0,-Y
    00F4 9508      RET
pop_lset:
    00F5 9009      LD	R0,Y+
    00F6 BE0F      OUT	0x3F,R0
    00F7 9009      LD	R0,Y+
    00F8 9019      LD	R1,Y+
    00F9 9029      LD	R2,Y+
    00FA 9039      LD	R3,Y+
    00FB 9049      LD	R4,Y+
    00FC 9059      LD	R5,Y+
    00FD 9069      LD	R6,Y+
    00FE 9079      LD	R7,Y+
    00FF 9089      LD	R8,Y+
    0100 9099      LD	R9,Y+
    0101 9109      LD	R16,Y+
    0102 9119      LD	R17,Y+
    0103 9129      LD	R18,Y+
    0104 9139      LD	R19,Y+
    0105 9189      LD	R24,Y+
    0106 9199      LD	R25,Y+
    0107 91A9      LD	R26,Y+
    0108 91B9      LD	R27,Y+
    0109 91E9      LD	R30,Y+
    010A 91F9      LD	R31,Y+
    010B 9508      RET

⌨️ 快捷键说明

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