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

📄 no2.lst

📁 AVR-AT90S8535,HD8279,等开发的洁净空调专用DDC系统,包括AD/DA,PID计算等.
💻 LST
📖 第 1 页 / 共 2 页
字号:
          .equ	UDRIE	=5
          .equ	RXEN	=4
          .equ	TXEN	=3
          .equ	CHR9	=2
          .equ	RXB8	=1
          .equ	TXB8	=0
         
          .equ	ACD	=7
          .equ	ACO	=5
          .equ	ACI	=4
          .equ	ACIE	=3
          .equ	ACIC	=2
          .equ	ACIS1	=1
          .equ	ACIS0	=0
         
          .equ	MUX2	=2
          .equ	MUX1	=1
          .equ	MUX0	=0
         
          .equ	ADEN	=7
          .equ	ADSC	=6
          .equ	ADFR	=5
          .equ	ADIF	=4
          .equ	ADIE	=3
          .equ	ADPS2	=2
          .equ	ADPS1	=1
          .equ	ADPS0	=0
         
          .def	XL	=r26
          .def	XH	=r27
          .def	YL	=r28
          .def	YH	=r29
          .def	ZL	=r30
          .def	ZH	=r31
         
          .equ 	RAMEND  =$25F	;Last On-Chip SRAM location
          .equ	XRAMEND =$25F
          .equ	E2END	=$1FF
          .equ	FLASHEND=$FFF
         
          .equ	INT0addr=$001	;External Interrupt0 Vector Address
          .equ	INT1addr=$002	;External Interrupt1 Vector Address
          .equ	OC2addr =$003	;Timer2 compare match Vector Address
          .equ	OVF2addr=$004	;Timer2 overflow Vector Address
          .equ	ICP1addr=$005	;Timer1 Input Capture Vector Address
          .equ	OC1Aaddr=$006	;Timer1 Output Compare A Interrupt Vector Address
          .equ	OC1Baddr=$007	;Timer1 Output Compare B Interrupt Vector Address
          .equ	OVF1addr=$008	;Overflow1 Interrupt Vector Address
          .equ	OVF0addr=$009	;Overflow0 Interrupt Vector Address
          .equ	SPIaddr =$00A	;SPI Interrupt Vector Address
          .equ	URXCaddr=$00B	;UART Receive Complete Interrupt Vector Address
          .equ	UDREaddr=$00C	;UART Data Register Empty Interrupt Vector Address
          .equ	UTXCaddr=$00D	;UART Transmit Complete Interrupt Vector Address
          .equ	ADCCaddr=$00E	;ADC Conversion Complete Interrupt Vector Address
          .equ	ERDYaddr=$00F	;EEPROM Write Complete Interrupt Vector Address
          .equ	ACIaddr =$010	;Analog Comparator Interrupt Vector Address          .org	0x00
          .equ	label=$0200
000000 c01f      	rjmp	RESET	; 
         
         ;.org	0x01		;通用中断
         ;INTT0:	RJMP	GINT	;
         
         ;.org	0x06		;timerl
         ;INTTT:	RJMP	TINT	;
         
         	
          .org	0x020			;
         
          RESET:
000020 e50f      SYS:	ldi	R16,low(RAMEND)	;设置堆栈
000021 bf0d      	out	SPL,R16
000022 e002      	ldi	R16,high(RAMEND)
000023 bf0e      	out	SPH,R16
         	
000024 e208      	ldi	r16,$28		;8279写控制寄存器
000025 bb02      	out	portd,r16
000026 ed01      	ldi	r16,$d1
000027 bb08      	out	portb,r16
000028 9a94      	sbi	portd,4
         	
000029 e340      	ldi	r20,0X30	
00002a d0a5      	rcall	Delay
         	
         	;wdr			;看门狗复位
         	;ldi	R16,$0F		;0b00001111
         	;out	WDTCR,R16	;狗周期2048MS
         
00002b ef08      	ldi	R16,$F8		;0B11111000
00002c bb0a      	out	DDRA,R16	;A口0~2输入,3~7输出
00002d 9ada      	sbi	porta,2
00002e ef0a      	ldi	R16,$FA		;0B11111110
00002f bb01      	out	DDRD,R16	;D口0/2输入,1/3~7输出
000030 ef0f      	ldi	R16,$FF		;0B11111111
000031 bb04      	out	DDRC,R16	;C口输出
000032 bb07      	out	DDRB,R16	;B口输出
         
000033 e805      	ldi	R16,$85		;设置ADC转换,中断触发,ADC为单次模式且32M分频
000034 b906      	out	adcsr,R16
000035 2700      	clr	R16
000036 b907      	out	admux,R16	;ADC  0通道
000037 9a36      	sbi	adcsr,6		;启动ADC
         
000038 e908      	ldi	r16,$98		;初始化COM
000039 b90a              out	ucr,r16		;设置UART控制寄存器---UCR
00003a e109      	ldi	r16,25
00003b b909      	out	ubrr,r16	;设置UART波特率
         
00003c e400      	ldi	r16,$40		;INT0可用,INT1屏蔽
00003d bf0b      	out	GIMSK,R16
00003e e003      	ldi	r16,$3		;INT0上升沿触发   
00003f bf05      	out	mcucr,r16
         	
000040 9894      	cbi	portd,4
000041 e000      	ldi	r16,$00		;8279键盘显示方式初始
000042 bb08      	out	portb,r16
000043 9a94      	sbi	portd,4
000044 0000      	nop
000045 9894      	cbi	portd,4
000046 e202      	ldi	r16,$22		;8279时钟分频=2
000047 bb08      	out	portb,r16
000048 9a94      	sbi	portd,4	
         	
         
000049 2711      	clr	r17
00004a 2733      	clr	r19		;ADIN 4051地址计数
         
         	
00004b 9936      ADC1:	sbic	adcsr,adsc	;转换结束跳行否则等待
00004c cffe      	rjmp	ADC1
00004d b024      	in	r2,adcl		;把转换结果送r2,r3
00004e b035      	in	r3,adch
00004f 99ca      	sbic	pina,2		;读开关量
000050 e020      	ldi	r18,$0		;开关量关
000051 e021      	ldi	r18,$1		;开关量开
         	
000052 3130      	cpi	r19,16
000053 f009      	breq	cl
000054 c001      	rjmp	cl1
000055 2733       cl:	clr	r19
          			
000056 e0b1       cl1:	ldi	r27,$01		;传数据到SRAM 0100 处
000057 2fa3      	mov	r26,r19
000058 922d      	st	x+,r2		;传低位数据 0100
000059 923c      	st	x,r3		;传高位数据 0101
00005a 9650      	adiw	r26,$10		
00005b 932c      	st	x,r18		;传开关量到 0111
         	
         	
00005c d03a      	rcall	display		;调用显示子程序
         
00005d 9533      	inc	r19	
00005e 3018      	cpi	r17,8		;比较4051地址是否到8通道相等跳转
00005f f009      	breq	ta	
000060 c007      	rjmp	tb
000061 2711        ta:	clr	r17
000062 9938        	sbic	admux,0
000063 c002        	rjmp	t0
000064 9a38        	sbi	admux,0
000065 c004      	rjmp	addmux
000066 9838        t0:	cbi	admux,0
000067 c002       	rjmp	addmux
000068 9513        tb:	inc	r17
000069 c000      	rjmp	addmux
00006a 3010      addmux:	cpi	r17,0		;确定4051地址
00006b f079      	breq	ina
00006c 3011      	cpi	r17,1
00006d f089      	breq	inb
00006e 3012      	cpi	r17,2
00006f f099      	breq	ini
000070 3013      	cpi	r17,3
000071 f0a1      	breq	ind
000072 3014      	cpi	r17,4
000073 f0a1      	breq	ine
000074 3015      	cpi	r17,5
000075 f0b1      	breq	inf
000076 3016      	cpi	r17,6
000077 f0b1      	breq	ing
000078 3017      	cpi	r17,7
000079 f0b9      	breq	inh
00007a cfd0      	rjmp	adc1
00007b 98db      ina:	cbi	porta,3		;4051地址通过置位清位输出
00007c 98dc      	cbi	porta,4
00007d 98dd      	cbi	porta,5	
00007e c014      	rjmp	ys
00007f 9adb      inb:	sbi	porta,3
000080 9a95      	sbi	portd,5
000081 9894      	cbi	portd,4
000082 c010      	rjmp	ys
000083 98db      ini:	cbi	porta,3
000084 9adc      	sbi	porta,4
000085 c00d      	rjmp	ys
000086 9adb      ind:	sbi	porta,3
000087 c00b      	rjmp	ys
000088 98db      ine:	cbi	porta,3
000089 98dc      	cbi	porta,4
00008a 9add      	sbi	porta,5
00008b c007      	rjmp	ys
00008c 9adb      inf:	sbi	porta,3
00008d c005      	rjmp	ys
00008e 98db      ing:	cbi	porta,3
00008f 9adc      	sbi	porta,4
000090 c002      	rjmp	ys
000091 9adb      inh:	sbi	porta,3
000092 c000      	rjmp	ys
         								
         	
          ys:	
000093 e546      	ldi	r20,0X56	;延时1秒
000094 d03b      	rcall	Delay
000095 9a36      	sbi	adcsr,6		;启动ADC
000096 cfb4      	rjmp	adc1		;
         	
         	
         
         		
         	
         	
         	
          display:
000097 9a95      	sbi	portd,5
000098 9894      	cbi	portd,4
000099 e970      	ldi	r23,$90
00009a bb78      	out	portb,r23
00009b 9a94      	sbi	portd,4	
00009c 9895      	cbi	portd,5
         
00009d e0f4      	ldi	zh,high(label*2)
00009e 2fe3      	mov	zl,r19
00009f 95c8      	lpm
0000a0 9894      	cbi	portd,4
0000a1 ba08      	out	portb,r0
0000a2 9a94      	sbi	portd,4		
         
         
0000a3 e0f4      	ldi	zh,high(label*2)
0000a4 2d03      	mov	r16,r3
0000a5 9502      	swap	r16
0000a6 d008      	rcall	outpd1
0000a7 2d03      	mov	r16,r3
0000a8 d00e      	rcall	outpd2
0000a9 2d02      	mov	r16,r2
0000aa 9502      	swap	r16
0000ab d013      	rcall	outpd3
0000ac 2d02      	mov	r16,r2
0000ad d019      	rcall	outpd4
0000ae 9508      	ret
0000af 700f      outpd1:  andi	r16,$0f
0000b0 e0e0      	ldi	zl,low(label*2)
0000b1 0fe0      	add	zl,r16
0000b2 95c8      	lpm
0000b3 9894      	cbi	portd,4
0000b4 ba08      	out	portb,r0
0000b5 9a94      	sbi	portd,4	
0000b6 9508      	ret
0000b7 700f      outpd2:  andi	r16,$0f
0000b8 e0e0      	ldi	zl,low(label*2)
0000b9 0fe0      	add	zl,r16
0000ba 95c8      	lpm
0000bb 9894      	cbi	portd,4
0000bc ba08      	out	portb,r0
0000bd 9a94      	sbi	portd,4	
0000be 9508      	ret
0000bf 700f      outpd3:  andi	r16,$0f
0000c0 e0e0      	ldi	zl,low(label*2)
0000c1 0fe0      	add	zl,r16
0000c2 95c8      	lpm
0000c3 9894      	cbi	portd,4
0000c4 ba08      	out	portb,r0
0000c5 9a94      	sbi	portd,4	
         
         	
0000c6 9508      	ret
0000c7 700f      outpd4:  andi	r16,$0f
0000c8 e0e0      	ldi	zl,low(label*2)
0000c9 0fe0      	add	zl,r16
0000ca 95c8      	lpm
         
0000cb 9894      	cbi	portd,4
0000cc ba08      	out	portb,r0
0000cd 9a94      	sbi	portd,4		
0000ce 9a95      	sbi	portd,5
         
0000cf 9508      	ret		
         	
         	
         		
         
         	
         	
0000d0 934f      delay:  push	r20		;2t延时子程序
0000d1 934f      l0:     push	r20		;2t
0000d2 934f      l1:     push	r20		;2t
0000d3 934f      l2:     push	r20		;2t
0000d4 954a      l3:     dec	r20		;1t
0000d5 f7f1              brne	l3		;1t/2t
0000d6 914f              pop	r20		;2t
0000d7 954a              dec	r20		;1t 
0000d8 f7d1              brne	l2		;1t/2t
0000d9 914f              pop	r20		;2t
0000da 954a              dec	r20		;1t 
0000db f7b1              brne	l1		;1t/2t
0000dc 914f              pop	r20		;2t
0000dd 954a              dec	r20		;1t 
0000de f791              brne	l0		;1T/2T
0000df 914f              pop	r20		;2t
0000e0 9508              ret			;4t
         
         
          .cseg
          .org	$0200
          .dw	0x063f,0x4f5b,0x6d66,0x077d	
000200 063f
000201 4f5b
000202 6d66
000203 077d
          .dw	0x6f7f,0x7c77,0x5e39,0x7179
000204 6f7f
000205 7c77
000206 5e39
000207 7179

Assembly complete with no errors.

⌨️ 快捷键说明

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