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

📄 no3a.lst

📁 AVR-AT90S8535,HD8279,等开发的洁净空调专用DDC系统,包括AD/DA,PID计算等.
💻 LST
📖 第 1 页 / 共 4 页
字号:
00014d 96df      	adiw	r26,63		;通道号+$40=xl
00014e e0b1      	ldi	r27,$01		;xh=$01	
00014f 910d      	ld	r16,x+		;eep映射参数低字节
000150 911c      	ld	r17,x
         	;rcall	tdhpd		;根据通道号判断是否需转换成BCD码
000151 3081      	cpi	r24,$01
000152 f411      	brne	left3		;r24<>1则需转换
000153 950a      	dec	r16		;单字节EEP参数
000154 c001      	rjmp	left4
000155 e000      left3:	ldi	r16,$0;1	;000000
         	;rcall	subcd		;BCD码减法
         	;rcall	tzbcd		;BCD码调整
000156 d231      left4:	rcall	display;1
000157 9309      	st	y+,r16
000158 8318      	st	y,r17
000159 cf78      left5:	rjmp	kqt
         
00015a d081      keydown:rcall	beep		;键盘RIGHT
00015b 3090      	cpi	r25,$0
00015c f0d9      	breq	right5
00015d e0d1      	ldi	r29,$01		;yh=$01
00015e e9cd      	ldi	r28,$9d		;yl=$9d
00015f 81a8      	ld	r26,y		;通道号在r26
000160 3091      	cpi	r25,$01
000161 f439      	brne	right2
000162 9612      	adiw	r26,$02
000163 31ae      	cpi	r26,$1e
000164 f409      	brne	right1
000165 e0a0      	ldi	r26,$0
000166 93a9      right1:	st	y+,r26		;保存通道号到0x019d
000167 d081      	rcall	showcs		;显示通道标示
000168 cf69      	rjmp	kqt
000169 3092      right2:	cpi	r25,$02
00016a f469      	brne	right5
00016b 95a3      	inc	r26
00016c 96df      	adiw	r26,63		;通道号+$40=xl
00016d e0b1      	ldi	r27,$01		;xh=$01	
00016e 910d      	ld	r16,x+		;eep映射参数低字节
00016f 911c      	ld	r17,x
         	;rcall	tdhpd		;根据通道号判断是否需转换成BCD码
000170 3081      	cpi	r24,$01
000171 f411      	brne	right3		;r24<>1则需转换
000172 9503      	inc	r16		;单字节EEP参数
000173 c001      	rjmp	right4
000174 e000      right3:	ldi	r16,$0;1	;0000000
         	;rcall	adbcd		;BCD码加法
         	;rcall	tzbcd		;BCD码调整
000175 d212      right4:	rcall	display;1
000176 9309      	st	y+,r16
000177 8318      	st	y,r17
000178 cf59      right5:	rjmp	kqt
         	
000179 2e47      xsgy:	mov	res1,r23
00017a e000      	ldi	r16,$00
00017b 2e50      	mov	res2,r16
00017c d1ea      	rcall	htd3
00017d 9a95      	sbi	portd,5		;初始化8279控制字
00017e 9894      	cbi	portd,4
00017f 9a93      	sbi	portd,3
000180 e901      	ldi	r16,$91
000181 bb08      	out	portb,r16
000182 0000      	nop
000183 9a94      	sbi	portd,4
000184 9895      	cbi	portd,5	
000185 2d07      	mov	r16,cnt2d
000186 d227      	rcall	outpd
000187 2d06      	mov	r16,cnt1d
000188 9502      	swap	r16
000189 d224      	rcall	outpd
00018a 2d06      	mov	r16,cnt1d
00018b d222      	rcall	outpd
00018c 9a95      	sbi	portd,5	
00018d 9508      	ret	
         
00018e 99e1      EERead:	sbic	EECR,EEWE	;if EEWE not clear
00018f cffe      	rjmp	EERead
000190 e001      	ldi	r16,$01
000191 2e40      	mov	r4,r16
000192 2e38      	mov     r3,r24		;    wait more
000193 ba4f      	out 	EEARH,r4	;output address high for 8515
000194 ba3e      	out	EEARL,r3	;output address low for 8515
000195 9ae0      	sbi	EECR,EERE	;set EEPROM Read strobe
         				;This instruction takes 4 clock cycles since
         				;it halts the CPU for two clock cycles
000196 b30d      	in	r16,EEDR	;get data
000197 9508      	ret
         
000198 99e1      EEWrite:sbic	EECR,EEWE	;if EEWE not clear
000199 cffe      	rjmp	EEWrite		;    wait more
00019a e001      	ldi	r16,$01
00019b 2e40      	mov	r4,r16
00019c 2e38      	mov	r3,r24
00019d ba4f      	out 	EEARH,r4	;output address high for 8515
00019e ba3e      	out	EEARL,r3	;output address low for 8515
00019f bb7d      	out	EEDR,r23        ;output data
0001a0 9ae2      	sbi 	EECR,EEMWE	;set master write enable, remove if 1200 is used	
0001a1 9ae1      	sbi	EECR,EEWE	;set EEPROM Write strobe
0001a2 0000      	nop			;This instruction takes 4 clock cycles since
0001a3 0000      	nop			;it halts the CPU for two clock cycles
0001a4 0000      	nop
0001a5 0000      	nop	
0001a6 9508      	ret 		         	
         
          readkey:
0001a7 ef0f      	ser	r16
0001a8 bb07      	out	ddrb,r16
0001a9 9a95      	sbi	portd,5		;初始化8279控制字
0001aa 9894      	cbi	portd,4
0001ab e400      	ldi	r16,$40
0001ac bb08      	out	portb,r16
0001ad 9a94      	sbi	portd,4
0001ae 9895      	cbi	portd,5
0001af 2700      	clr	r16
0001b0 bb07      	out	ddrb,r16
0001b1 bb08      	out	portb,r16
0001b2 9893      	cbi	portd,3
0001b3 0000      	nop
0001b4 b316      	in	r17,pinb
0001b5 9a95      	sbi	portd,5	
0001b6 9a93      	sbi	portd,3
0001b7 ef0f      	ser	r16
0001b8 bb07      	out	ddrb,r16
0001b9 9508      	ret
         	
0001ba d014      setupxs:rcall	cs8279		;显示字符
         
0001bb e60d      	ldi	r16,$6d		;'S'
0001bc d01b      	rcall	outxs	
0001bd e709      	ldi	r16,$79		;'E'
0001be d019      	rcall	outxs
0001bf e708      	ldi	r16,$78		;'t'
0001c0 d017      	rcall	outxs
0001c1 e30e      	ldi	r16,$3e		;'u'
0001c2 d015      	rcall	outxs
0001c3 e703      	ldi	r16,$73		;'p'
0001c4 d013      	rcall	outxs
0001c5 9a95      	sbi	portd,5	
0001c6 e546      	ldi	r20,$56		;调用延时
0001c7 d1ef      	rcall	delay
0001c8 d006      	rcall	cs8279		;显示温度设定
0001c9 e708      	ldi	r16,$78		;'t'
0001ca d00d      	rcall	outxs
0001cb e006      	ldi	r16,$06		;'-'
0001cc d00b      	rcall	outxs
0001cd d013      	rcall	jy
0001ce 9508      	ret
         	
0001cf 9a95      cs8279:	sbi	portd,5		;初始化8279控制字
0001d0 9894      	cbi	portd,4
0001d1 9a93      	sbi	portd,3
0001d2 e900      	ldi	r16,$90
0001d3 bb08      	out	portb,r16
0001d4 0000      	nop
0001d5 9a94      	sbi	portd,4
0001d6 9895      	cbi	portd,5	
0001d7 9508      	ret
         			
          outxs:				;显示输出
0001d8 9894      	cbi	portd,4
0001d9 bb08      	out	portb,r16
0001da 9a94      	sbi	portd,4	
0001db 9508      	ret
         
          beep:	
0001dc 9a96      	sbi	portd,6	
0001dd e149      	ldi	r20,$19		;调用延时
0001de d1d8      	rcall	delay
0001df 9896      	cbi	portd,6	
0001e0 9508      	ret
         	
0001e1 e400      jy:	ldi	r16,$40		;'-'
0001e2 dff5      	rcall	outxs	
0001e3 e400      	ldi	r16,$40		;'-'
0001e4 dff3      	rcall	outxs	
0001e5 e400      	ldi	r16,$40		;'-'
0001e6 dff1      	rcall	outxs	
0001e7 9a95      	sbi	portd,5	
0001e8 9508      	ret	
         
0001e9 dfe5      showcs:	rcall	cs8279
0001ea 3080      	cpi	r24,$00		;显示温度设定
0001eb f431      	brne	csbsf1
0001ec e708      	ldi	r16,$78		;'t'
0001ed dfea      	rcall	outxs	
0001ee e006      	ldi	r16,$06		;'1'
0001ef dfe8      	rcall	outxs	
0001f0 dff0      	rcall	jy
0001f1 9508      	ret
0001f2 3081      csbsf1:	cpi	r24,$01		;显示温度周期
0001f3 f431      	brne	csbsf2
0001f4 e60d      	ldi	r16,$6d		;'s'
0001f5 dfe2      	rcall	outxs	
0001f6 e006      	ldi	r16,$06		;'1'
0001f7 dfe0      	rcall	outxs	
0001f8 dfe8      	rcall	jy
0001f9 9508      	ret
0001fa 3082      csbsf2:	cpi	r24,$02		;显示湿度设定
0001fb f431      	brne	csbsf3
0001fc e706      	ldi	r16,$76		;'h'
0001fd dfda      	rcall	outxs	
0001fe e006      	ldi	r16,$06		;'1'
0001ff dfd8      	rcall	outxs	
000200 dfe0      	rcall	jy
000201 9508      	ret
000202 3083      csbsf3:	cpi	r24,$03		;显示湿度周期
000203 f431      	brne	csbsf4
000204 e60d      	ldi	r16,$6d		;'s'
000205 dfd2      	rcall	outxs	
000206 e50b      	ldi	r16,$5b		;'2'
000207 dfd0      	rcall	outxs	
000208 dfd8      	rcall	jy
000209 9508      	ret
00020a 3084      csbsf4:	cpi	r24,$04		;显示P1
00020b f431      	brne	csbsf5
00020c e703      	ldi	r16,$73		;'p'
00020d dfca      	rcall	outxs	
00020e e006      	ldi	r16,$06		;'1'
00020f dfc8      	rcall	outxs	
000210 dfd0      	rcall	jy
000211 9508      	ret
000212 3085      csbsf5:	cpi	r24,$05		;显示I1
000213 f431      	brne	csbsf6
000214 e300      	ldi	r16,$30		;'i'
000215 dfc2      	rcall	outxs	
000216 e006      	ldi	r16,$06		;'1'
000217 dfc0      	rcall	outxs	
000218 dfc8      	rcall	jy
000219 9508      	ret
00021a 3086      csbsf6:	cpi	r24,$06		;显示D1
00021b f431      	brne	csbsf7
00021c e50e      	ldi	r16,$5e		;'d'
00021d dfba      	rcall	outxs	
00021e e006      	ldi	r16,$06		;'1'
00021f dfb8      	rcall	outxs	
000220 dfc0      	rcall	jy
000221 9508      	ret
000222 3087      csbsf7:	cpi	r24,$07		;显示P2
000223 f431      	brne	csbsf8
000224 e703      	ldi	r16,$73		;'p'
000225 dfb2      	rcall	outxs	
000226 e50b      	ldi	r16,$5b		;'2'
000227 dfb0      	rcall	outxs	
000228 dfb8      	rcall	jy
000229 9508      	ret
00022a 3088      csbsf8:	cpi	r24,$08		;显示I2
00022b f431      	brne	csbsf9
00022c e300      	ldi	r16,$30		;'i'
00022d dfaa      	rcall	outxs	
00022e e50b      	ldi	r16,$5b		;'2'
00022f dfa8      	rcall	outxs	
000230 dfb0      	rcall	jy
000231 9508      	ret
000232 3089      csbsf9:	cpi	r24,$09		;显示D2
000233 f431      	brne	csbsfa
000234 e50e      	ldi	r16,$5e		;'d'
000235 dfa2      	rcall	outxs	
000236 e50b      	ldi	r16,$5b		;'2'
000237 dfa0      	rcall	outxs	
000238 dfa8      	rcall	jy
000239 9508      	ret
00023a 308a      csbsfa:	cpi	r24,$a		;显示压力
00023b f431      	brne	csbsfb
00023c e703      	ldi	r16,$73		;'p'
00023d df9a      	rcall	outxs	
00023e e700      	ldi	r16,$70		;'r'
00023f df98      	rcall	outxs	
000240 dfa0      	rcall	jy
000241 9508      	ret
000242 308b      csbsfb:	cpi	r24,$b		;显示凝节水温度
000243 f431      	brne	csbsfc
000244 e708      	ldi	r16,$78		;'t'
000245 df92      	rcall	outxs	
000246 e50b      	ldi	r16,$5b		;'2'
000247 df90      	rcall	outxs	
000248 df98      	rcall	jy
000249 9508      	ret
00024a 308c      csbsfc:	cpi	r24,$c		;通讯站号
00024b f459      	brne	csbsfd
00024c e60d      	ldi	r16,$6d		;'s'
00024d df8a      	rcall	outxs	
00024e e400      	ldi	r16,$40		;'-'
00024f df88      	rcall	outxs
000250 e307      	ldi	r16,$37		;'n'
000251 df86      	rcall	outxs
000252 e000      	ldi	r16,$00		;''
000253 df84      	rcall	outxs
000254 e000      	ldi	r16,$00		;''
000255 df82      	rcall	outxs	
000256 9508      	ret	
000257 308d      csbsfd:	cpi	r24,$d		;通讯传输频率
000258 f459      	brne	csbsfe
000259 e30e      	ldi	r16,$3e		;'u'
00025a df7d      	rcall	outxs	
00025b e70c      	ldi	r16,$7c		;'b'
00025c df7b      	rcall	outxs
00025d e700      	ldi	r16,$70		;'r'
00025e df79      	rcall	outxs
00025f e700      	ldi	r16,$70		;'r'
000260 df77      	rcall	outxs
000261 e000      	ldi	r16,$00		;''
000262 df75      	rcall	outxs	
000263 9508      	ret	
000264 308e      csbsfe:	cpi	r24,$e		;运行模式
000265 f451      	brne	tcret
000266 e707      	ldi	r16,$77		;'a'
000267 df70      	rcall	outxs	
000268 e10c      	ldi	r16,$1c		;'u'
000269 df6e      	rcall	outxs
00026a e708      	ldi	r16,$78		;'t'
00026b df6c      	rcall	outxs	
00026c e50c      	ldi	r16,$5c		;'o'
00026d df6a      	rcall	outxs	
00026e e000      	ldi	r16,$00		;''
00026f df68      	rcall	outxs	
000270 9508      tcret:	ret
         	
         ;**********************	
         ;********主程序********
         ;**********************
         ;.cseg
         ;.org	0x01b6
          RESET:
000271 e50f      SYS:	ldi	R16,low(RAMEND)	;设置堆栈
000272 bf0d      	out	SPL,R16
000273 e002      	ldi	R16,high(RAMEND)
000274 bf0e      	out	SPH,R16
         
         	;wdr			;看门狗复位
         	;ldi	R16,$0F		;0b00001111
         	;out	WDTCR,R16	;狗周期2048MS
000275 9a8e      	sbi	ddrd,6
000276 9896      	cbi	portd,6
         
000277 ef08      	ldi	R16,$F8		;0B11111000
000278 bb0a      	out	DDRA,R16	;A口0~2输入,3~7输出
000279 9ada      	sbi	porta,2
00027a ef0a      	ldi	R16,$FA		;0B11111110
00027b bb01      	out	DDRD,R16	;D口0/2输入,1/3~7输出
00027c ef0f      	ldi	R16,$FF		;0B11111111
00027d bb04      	out	DDRC,R16	;C口输出
00027e bb07      	out	DDRB,R16	;B口输出
         
00027f e208      	ldi	r16,$28	 	;8279写控制寄存器
000280 bb02      	out	portd,r16	
000281 ed01      	ldi	r16,$d1		;清8279寄存器
000282 bb08      	out	portb,r16
000283 9a94      	sbi	portd,4
000284 2700      	clr	r16
000285 bb07      	out	ddrb,r16
000286 e300      	ldi	r16,$30
000287 bb02      	out	portd,r16
000288 9bc7      wait:	sbis	portb,7		;等待清除结束
000289 cffe      	rjmp	wait
00028a 9894      	cbi	portd,4
00028b 9a93      	sbi	portd,3	
00028c ef0f      	ser	r16
00028d bb07      	out	ddrb,r16
         	
00028e 2700      	clr	R16
00028f b907      	out	admux,R16	;ADC  0通道
000290 e805      	ldi	R16,$85		;设置ADC转换,中断触发,ADC为单次模式且32M分频
000291 b906      	out	adcsr,R16
000292 9a34      	sbi	adcsr,adif	;写1复位中断为0
000293 9a36      	sbi	adcsr,6		;启动ADC
         
         	
000294 2788      	clr	r24		;把EEP中的参数映射到SRAM的0X0140~0X014E处
000295 e0b1      	ldi	r27,$01
000296 e4a0      	ldi	r26,$40
000297 99e1      EEpRead:sbic	EECR,EEWE	;if EEWE not clear
000298 cffe      	rjmp	EEpRead
000299 e001      	ldi	r16,$01
00029a bb0f      	out 	EEARH,r16	;output address high for 8515
00029b bb8e      	out	EEARL,r24	;output address low for 8515
00029c 9ae0      	sbi	EECR,EERE	;set EEPROM Read strobe
00029d b30d      	in	r16,EEDR	;get data

⌨️ 快捷键说明

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