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

📄 no3b.lst

📁 AVR-AT90S8535,HD8279,等开发的洁净空调专用DDC系统,包括AD/DA,PID计算等.
💻 LST
📖 第 1 页 / 共 4 页
字号:
000189 2e38      	mov	r3,r24
00018a ba4f      	out 	EEARH,r4	;output address high for 8515
00018b ba3e      	out	EEARL,r3	;output address low for 8515
00018c bb7d      	out	EEDR,r23        ;output data
00018d 9ae2      	sbi 	EECR,EEMWE	;set master write enable, remove if 1200 is used	
00018e 9ae1      	sbi	EECR,EEWE	;set EEPROM Write strobe
00018f 0000      	nop			;This instruction takes 4 clock cycles since
000190 0000      	nop			;it halts the CPU for two clock cycles
000191 0000      	nop
000192 0000      	nop	
000193 9508      	ret 		         	
         
          readkey:
000194 ef0f      	ser	r16
000195 bb07      	out	ddrb,r16
000196 9a95      	sbi	portd,5		;初始化8279控制字
000197 9894      	cbi	portd,4
000198 e400      	ldi	r16,$40
000199 bb08      	out	portb,r16
00019a 9a94      	sbi	portd,4
00019b 9895      	cbi	portd,5
00019c 2700      	clr	r16
00019d bb07      	out	ddrb,r16
00019e bb08      	out	portb,r16
00019f 9893      	cbi	portd,3
0001a0 0000      	nop
0001a1 b316      	in	r17,pinb
0001a2 9a95      	sbi	portd,5	
0001a3 9a93      	sbi	portd,3
0001a4 ef0f      	ser	r16
0001a5 bb07      	out	ddrb,r16
0001a6 9508      	ret
         	
0001a7 d014      setupxs:rcall	cs8279		;显示字符
         
0001a8 e60d      	ldi	r16,$6d		;'S'
0001a9 d01b      	rcall	outxs	
0001aa e709      	ldi	r16,$79		;'E'
0001ab d019      	rcall	outxs
0001ac e708      	ldi	r16,$78		;'t'
0001ad d017      	rcall	outxs
0001ae e30e      	ldi	r16,$3e		;'u'
0001af d015      	rcall	outxs
0001b0 e703      	ldi	r16,$73		;'p'
0001b1 d013      	rcall	outxs
0001b2 9a95      	sbi	portd,5	
0001b3 e546      	ldi	r20,$56		;调用延时
0001b4 d288      	rcall	delay
0001b5 d006      	rcall	cs8279		;显示温度设定
0001b6 e708      	ldi	r16,$78		;'t'
0001b7 d00d      	rcall	outxs
0001b8 e006      	ldi	r16,$06		;'-'
0001b9 d00b      	rcall	outxs
0001ba d013      	rcall	jy
0001bb 9508      	ret
         	
0001bc 9a95      cs8279:	sbi	portd,5		;初始化8279控制字
0001bd 9894      	cbi	portd,4
0001be 9a93      	sbi	portd,3
0001bf e900      	ldi	r16,$90
0001c0 bb08      	out	portb,r16
0001c1 0000      	nop
0001c2 9a94      	sbi	portd,4
0001c3 9895      	cbi	portd,5	
0001c4 9508      	ret
         			
          outxs:				;显示输出
0001c5 9894      	cbi	portd,4
0001c6 bb08      	out	portb,r16
0001c7 9a94      	sbi	portd,4	
0001c8 9508      	ret
         
          beep:	
0001c9 9896      	cbi	portd,6	
0001ca e149      	ldi	r20,$19		;调用延时
0001cb d271      	rcall	delay
0001cc 9a96      	sbi	portd,6	
0001cd 9508      	ret
         	
0001ce e400      jy:	ldi	r16,$40		;'-'
0001cf dff5      	rcall	outxs	
0001d0 e400      	ldi	r16,$40		;'-'
0001d1 dff3      	rcall	outxs	
0001d2 e400      	ldi	r16,$40		;'-'
0001d3 dff1      	rcall	outxs	
0001d4 9a95      	sbi	portd,5	
0001d5 9508      	ret	
         
0001d6 dfe5      showcs:	rcall	cs8279
0001d7 3080      	cpi	r24,$00		;显示温度设定
0001d8 f431      	brne	csbsf1
0001d9 e708      	ldi	r16,$78		;'t'
0001da dfea      	rcall	outxs	
0001db e006      	ldi	r16,$06		;'1'
0001dc dfe8      	rcall	outxs	
0001dd dff0      	rcall	jy
0001de 9508      	ret
0001df 3081      csbsf1:	cpi	r24,$01		;显示温度周期
0001e0 f431      	brne	csbsf2
0001e1 e60d      	ldi	r16,$6d		;'s'
0001e2 dfe2      	rcall	outxs	
0001e3 e006      	ldi	r16,$06		;'1'
0001e4 dfe0      	rcall	outxs	
0001e5 dfe8      	rcall	jy
0001e6 9508      	ret
0001e7 3082      csbsf2:	cpi	r24,$02		;显示湿度设定
0001e8 f431      	brne	csbsf3
0001e9 e706      	ldi	r16,$76		;'h'
0001ea dfda      	rcall	outxs	
0001eb e006      	ldi	r16,$06		;'1'
0001ec dfd8      	rcall	outxs	
0001ed dfe0      	rcall	jy
0001ee 9508      	ret
0001ef 3083      csbsf3:	cpi	r24,$03		;显示湿度周期
0001f0 f431      	brne	csbsf4
0001f1 e60d      	ldi	r16,$6d		;'s'
0001f2 dfd2      	rcall	outxs	
0001f3 e50b      	ldi	r16,$5b		;'2'
0001f4 dfd0      	rcall	outxs	
0001f5 dfd8      	rcall	jy
0001f6 9508      	ret
0001f7 3084      csbsf4:	cpi	r24,$04		;显示P1
0001f8 f431      	brne	csbsf5
0001f9 e703      	ldi	r16,$73		;'p'
0001fa dfca      	rcall	outxs	
0001fb e006      	ldi	r16,$06		;'1'
0001fc dfc8      	rcall	outxs	
0001fd dfd0      	rcall	jy
0001fe 9508      	ret
0001ff 3085      csbsf5:	cpi	r24,$05		;显示I1
000200 f431      	brne	csbsf6
000201 e300      	ldi	r16,$30		;'i'
000202 dfc2      	rcall	outxs	
000203 e006      	ldi	r16,$06		;'1'
000204 dfc0      	rcall	outxs	
000205 dfc8      	rcall	jy
000206 9508      	ret
000207 3086      csbsf6:	cpi	r24,$06		;显示D1
000208 f431      	brne	csbsf7
000209 e50e      	ldi	r16,$5e		;'d'
00020a dfba      	rcall	outxs	
00020b e006      	ldi	r16,$06		;'1'
00020c dfb8      	rcall	outxs	
00020d dfc0      	rcall	jy
00020e 9508      	ret
00020f 3087      csbsf7:	cpi	r24,$07		;显示P2
000210 f431      	brne	csbsf8
000211 e703      	ldi	r16,$73		;'p'
000212 dfb2      	rcall	outxs	
000213 e50b      	ldi	r16,$5b		;'2'
000214 dfb0      	rcall	outxs	
000215 dfb8      	rcall	jy
000216 9508      	ret
000217 3088      csbsf8:	cpi	r24,$08		;显示I2
000218 f431      	brne	csbsf9
000219 e300      	ldi	r16,$30		;'i'
00021a dfaa      	rcall	outxs	
00021b e50b      	ldi	r16,$5b		;'2'
00021c dfa8      	rcall	outxs	
00021d dfb0      	rcall	jy
00021e 9508      	ret
00021f 3089      csbsf9:	cpi	r24,$09		;显示D2
000220 f431      	brne	csbsfa
000221 e50e      	ldi	r16,$5e		;'d'
000222 dfa2      	rcall	outxs	
000223 e50b      	ldi	r16,$5b		;'2'
000224 dfa0      	rcall	outxs	
000225 dfa8      	rcall	jy
000226 9508      	ret
000227 308a      csbsfa:	cpi	r24,$a		;显示压力
000228 f431      	brne	csbsfb
000229 e703      	ldi	r16,$73		;'p'
00022a df9a      	rcall	outxs	
00022b e700      	ldi	r16,$70		;'r'
00022c df98      	rcall	outxs	
00022d dfa0      	rcall	jy
00022e 9508      	ret
00022f 308b      csbsfb:	cpi	r24,$b		;显示凝节水温度
000230 f431      	brne	csbsfc
000231 e708      	ldi	r16,$78		;'t'
000232 df92      	rcall	outxs	
000233 e50b      	ldi	r16,$5b		;'2'
000234 df90      	rcall	outxs	
000235 df98      	rcall	jy
000236 9508      	ret
000237 308c      csbsfc:	cpi	r24,$c		;通讯站号
000238 f459      	brne	csbsfd
000239 e60d      	ldi	r16,$6d		;'s'
00023a df8a      	rcall	outxs	
00023b e400      	ldi	r16,$40		;'-'
00023c df88      	rcall	outxs
00023d e307      	ldi	r16,$37		;'n'
00023e df86      	rcall	outxs
00023f e000      	ldi	r16,$00		;''
000240 df84      	rcall	outxs
000241 e000      	ldi	r16,$00		;''
000242 df82      	rcall	outxs	
000243 9508      	ret	
000244 308d      csbsfd:	cpi	r24,$d		;通讯传输频率
000245 f459      	brne	csbsfe
000246 e30e      	ldi	r16,$3e		;'u'
000247 df7d      	rcall	outxs	
000248 e70c      	ldi	r16,$7c		;'b'
000249 df7b      	rcall	outxs
00024a e700      	ldi	r16,$70		;'r'
00024b df79      	rcall	outxs
00024c e700      	ldi	r16,$70		;'r'
00024d df77      	rcall	outxs
00024e e000      	ldi	r16,$00		;''
00024f df75      	rcall	outxs	
000250 9508      	ret	
000251 308e      csbsfe:	cpi	r24,$e		;运行模式
000252 f451      	brne	tcret
000253 e707      	ldi	r16,$77		;'a'
000254 df70      	rcall	outxs	
000255 e10c      	ldi	r16,$1c		;'u'
000256 df6e      	rcall	outxs
000257 e708      	ldi	r16,$78		;'t'
000258 df6c      	rcall	outxs	
000259 e50c      	ldi	r16,$5c		;'o'
00025a df6a      	rcall	outxs	
00025b e000      	ldi	r16,$00		;''
00025c df68      	rcall	outxs	
00025d 9508      tcret:	ret
         
         ;***** 参数计算子程序
00025e e4c8      cansujs:ldi	yl,$48
00025f e0d1      	ldi	yh,$01		;Y >>>0X0148
000260 e9e0      	ldi	zl,$90
000261 e0f0      	ldi	zh,$00		;Z >>>0X0090
         	
000262 8068      	ld	r6,y		;P1 l
000263 8079      	ldd	r7,y+1		;P1 h
000264 d17f      	rcall	btoh
000265 8240      	st	z,r4		;P1 L>>>0X0090
000266 8251      	std	z+1,r5		;P1 H>>>0X0091
000267 80ca      	ldd	r12,y+2		;I1 l
000268 80db      	ldd	r13,y+3		;I1 h
000269 808c      	ldd	r8,y+4		;D1 l
00026a 809d      	ldd	r9,y+5		;D1 h
00026b d039      	rcall	can01		;I1+D1+1
00026c 8060      	ld	r6,z		;P1 L<<<0X0090
00026d 8071      	ldd	r7,z+1		;P1 H<<<0X0091
00026e d045      	rcall	can02		;保留两位小数		
00026f 8262      	std	z+2,r6		;A1 L>>>0X0092
000270 8273      	std	z+3,r7		;A1 H>>>0X0093
000271 808c      	ldd	r8,y+4		;D1 l
000272 809d      	ldd	r9,y+5		;D1 h
000273 2cc8      	mov	r12,r8
000274 2cd9      	mov	r13,r9
000275 d02f      	rcall	can01		;D1+D1+1
000276 8060      	ld	r6,z		;P1 L<<<0X0090
000277 8071      	ldd	r7,z+1		;P1 H<<<0X0091
000278 d03b      	rcall	can02		;保留两位小数	
000279 8264      	std	z+4,r6		;B1 L>>>0X0094
00027a 8275      	std	z+5,r7		;B1 H>>>0X0095
00027b 806c      	ldd	r6,y+4		;D1 l
00027c 807d      	ldd	r7,y+5		;D1 h
00027d d166      	rcall	btoh
00027e 8060      	ld	r6,z		;P1 L<<<0X0090
00027f 8071      	ldd	r7,z+1		;P1 H<<<0X0091
000280 d033      	rcall	can02		;保留两位小数	
000281 8266      	std	z+6,r6		;C1 L>>>0X0096
000282 8277      	std	z+7,r7		;C1 H>>>0X0097
         	
000283 806e      	ldd	r6,y+6		;P2 l
000284 807f      	ldd	r7,y+7		;P2 h
000285 d15e      	rcall	btoh
000286 8640      	std	z+8,r4		;P2 L>>>0X0098
000287 8651      	std	z+9,r5		;P2 H>>>0X0099
000288 84c8      	ldd	r12,y+8		;I2 l
000289 84d9      	ldd	r13,y+9		;I2 h
00028a 848a      	ldd	r8,y+10		;D2 l
00028b 849b      	ldd	r9,y+11		;D2 h
00028c d018      	rcall	can01		;I2+D2+1
00028d 8460      	ldd	r6,z+8		;P2 L<<<0X0098
00028e 8471      	ldd	r7,z+9		;P2 H<<<0X0099
00028f d024      	rcall	can02		;保留两位小数		
000290 8662      	std	z+10,r6		;A2 L>>>0X009a
000291 8673      	std	z+11,r7		;A2 H>>>0X009b
000292 848a      	ldd	r8,y+10		;D2 l
000293 849b      	ldd	r9,y+11		;D2 h
000294 2cc8      	mov	r12,r8
000295 2cd9      	mov	r13,r9
000296 d00e      	rcall	can01		;D2+D2+1
000297 8460      	ldd	r6,z+8		;P2 L<<<0X0098
000298 8471      	ldd	r7,z+9		;P2 H<<<0X0099
000299 d01a      	rcall	can02		;保留两位小数	
00029a 8664      	std	z+12,r6		;B2 L>>>0X009c
00029b 8675      	std	z+13,r7		;B2 H>>>0X009d
00029c 846a      	ldd	r6,y+10		;D2 l
00029d 847b      	ldd	r7,y+11		;D2 h
00029e d145      	rcall	btoh
00029f 8460      	ldd	r6,z+8		;P2 L<<<0X0098
0002a0 8471      	ldd	r7,z+9		;P2 H<<<0X0099
0002a1 d012      	rcall	can02		;保留两位小数	
0002a2 8666      	std	z+14,r6		;C2 L>>>0X009e
0002a3 8677      	std	z+15,r7		;C2 H>>>0X009f
0002a4 9508      	ret
0002a5 24ff      can01:	clr	r15
0002a6 24ee      	clr	r14
0002a7 24bb      	clr	r11
0002a8 24aa      	clr	r10
0002a9 d0bc      	rcall	adbcd		;I1+D1
0002aa 24bb      	clr	r11
0002ab 24aa      	clr	r10
0002ac 2499      	clr	r9
0002ad 2488      	clr	r8
0002ae 9493      	inc	r9
0002af d0b6      	rcall	adbcd		;I1+D1+1
0002b0 2c6c      	mov	r6,r12
0002b1 2c7d      	mov	r7,r13
0002b2 d131      	rcall	btoh
0002b3 9508      	ret
0002b4 d0e9      can02:	rcall	mul16		;P1*D1
0002b5 2455      	clr	r5
0002b6 e604      	ldi	r16,$64
0002b7 2e40      	mov	r4,r16
0002b8 d0f3      	rcall	div16		;除100,保留两位小数
0002b9 9508      	ret
         	
         ;**********************	
         ;********主程序********
         ;**********************
         ;.cseg
         ;.org	0x01b6
          RESET:
0002ba e50f      SYS:	ldi	R16,low(RAMEND)	;设置堆栈
0002bb bf0d      	out	SPL,R16
0002bc e002      	ldi	R16,high(RAMEND)
0002bd bf0e      	out	SPH,R16
         
         	;wdr			;看门狗复位
         	;ldi	R16,$0F		;0b00001111
         	;out	WDTCR,R16	;狗周期2048MS
0002be 9a8e      	sbi	ddrd,6
0002bf 9896      	cbi	portd,6
         
0002c0 ef08      	ldi	R16,$F8		;0B11111000
0002c1 bb0a      	out	DDRA,R16	;A口0~2输入,3~7输出
0002c2 9ada      	sbi	porta,2
0002c3 ef0a      	ldi	R16,$FA		;0B11111110
0002c4 bb01      	out	DDRD,R16	;D口0/2输入,1/3~7输出
0002c5 ef0f      	ldi	R16,$FF		;0B11111111
0002c6 bb04      	out	DDRC,R16	;C口输出
0002c7 bb07      	out	DDRB,R16	;B口输出
         
0002c8 e208      	ldi	r16,$28	 	;8279写控制寄存器
0002c9 bb02      	out	portd,r16	
0002ca ed01      	ldi	r16,$d1		;清8279寄存器
0002cb bb08      	out	portb,r16
0002cc 9a94      	sbi	portd,4
0002cd 2700      	clr	r16
0002ce bb07      	out	ddrb,r16
0002cf e300      	ldi	r16,$30
0002d0 bb02      	out	portd,r16
0002d1 9bc7      wait:	sbis	portb,7		;等待清除结束
0002d2 cffe      	rjmp	wait
0002d3 9894      	cbi	portd,4
0002d4 9a93      	sbi	portd,3	
0002d5 ef0f      	ser	r16
0002d6 bb07      	out	ddrb,r16
         	
0002d7 2700      	clr	R16
0002d8 b907      	out	admux,R16	;ADC  0通道
0002d9 e805      	ldi	R16,$85		;设置ADC转换,中断触发,ADC为单次模式且32M分频
0002da b906      	out	adcsr,R16
0002db 9a34      	sbi	adcsr,adif	;写1复位中断为0
0002dc 9a36      	sbi	adcsr,6		;启动ADC
         
         	
0002dd 2788      	clr	r24		;把EEP中的参数映射到SRAM的0X0140~0X014E处
0002de e0b1      	ldi	r27,$01
0002df e4a0      	ldi	r26,$40
0002e0 99e1      EEpRead:sbic	EECR,EEWE	;if EEWE not clear
0002e1 cffe      	rjmp	EEpRead
0002e2 e001      	ldi	r16,$01
0002e3 bb0f      	out 	EEARH,r16	;output address high for 8515
0002e4 bb8e      	out	EEARL,r24	;output address low for 8515
0002e5 9ae0      	sbi	EECR,EERE	;set EEPROM Read strobe
0002e6 b30d      	in	r16,EEDR	;get data
0002e7 930d      	st	x+,r16
0002e8 9583      	inc	r24
0002e9 308f      	cpi	r24,$0f
0002ea f7a9      	brne	EEpRead
0002eb df72      	rcall	cansujs		;^^^^^^^^^^^^^^^^^^^^
         	
0002ec e908      	ldi	r16,$98		;初始化COM
0002ed b90a              out	ucr,r16		;设置UART控制寄存器---UCR
0002ee e5aa              ldi	r26,$5a		;波特率在SRAM的0x015a处
0002ef 910c              ld	r16,x
         	;ldi	r16,25
0002f0 b909      	out	ubrr,r16	;设置UART波特率
         	
0002f1 e003      	ldi	r16,$3		;INT0上升沿触发 0b00000011   
0002f2 bf05      	out	mcucr,r16
0002f3 e400      	ldi	r16,$40		
0002f4 bf0b      	out	GIMSK,R16	;INT0可用,INT1屏蔽 0b01000000
0002f5 bf0a      	out	GIFR,r16
0002f6 9478      	sei	
         	
0002f7 9894      	cbi	portd,4
0002f8 e000      	ldi	r16,$00		;8279键盘显示方式初始
0002f9 bb08      	out	portb,r16
0002fa 9a94      	sbi	portd,4
0002fb 0000      	nop
0002fc 9894      	cbi	portd,4
0002fd e202      	ldi	r16,$22		;8279时钟分频=2
0002fe bb08      	out	portb,r16
0002ff 9a94      	sbi	portd,4	
         
000300 debb      	rcall	cs8279		;显示字符
000301 e400      	ldi	r16,$40		;'-'
000302 dec2      	rcall	outxs
000303 e441      	ldi	r20,$41		;调用延时

⌨️ 快捷键说明

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