AVR汇编百例-输入输出.docVIP

  • 14
  • 0
  • 约 14页
  • 2016-12-29 发布于重庆
  • 举报
;时钟日历芯片62×42×读写程序,时钟日历数据读入到显示缓存区$6C--$73 ;范例24 ;USE 8515!使用DSPA子程序 .EQU RTCH=$40 ;rtc地址高八位 RDATE: RCALL BSYT ;初始化,兼冻结RTC LDI XL,$6D ;数据缓存区首地址 LDI YL,$06 ;首指日单元 RDLP: LD R16,Y+ ;$6b 6c 6d 6e 6f 70 71 72 73 ANDI R16,15 ; 2 9(D) - 1 0(M) - 0 2(Y) CPI R16,10 BRCS RDL1 ANDI R16,$7F ;容错处理 RDL1: ST X,R16$ DEC R26 CPI R26,$6B BRNE RDLP1 LDI XL,$70 RDLP1: CPI R26,$6E BRNE RDLP2 LDI R16,$14 ;送‘-’到$6E单元 ST X,R16 LDI XL,$73 RDLP2: CPI R26,$71 BRNE RDLP LDI R16,$14 ST X,R16 ;送‘-’到$71单元并结束子程序 RDINVL: RJMP WCRT RTIME: RCALL FIL2 ;请除缓存区 RCALL BSYT LDI XL,$73 LDI YL,$02 ;指向分单元(只读时分) RCL: LD R16,Y+ ANDI R16,15 CPI R16,10 BRCS RCL0 ANDI R16,$7F ;容错处理 RCL0: ST X,R16 DEC R26 CPI R26,$71 BRNE RCL1 LDI R16,$14 ;写入‘-’ ST X,R16 DEC R26 RCL1: CPI R26,$6E ;$6c 6d 6e 6f 70 71 72 73 BRNE RCL ; 1 6 - 3 5 CLR R16 ST Y,R16 LDS R17,$9FFB ;时制存储单元 LDS R16,$6f SWAP R16 LDS R15,$70 ADD R16,R15 ;合成小时 SUBI R16,$24 ;模24 RCALL SUDAA ;BCD码减法调整 BRCC RCL2 ;够减,转 SUBI R16,-36 ;否则恢复被减数 RCL2: CPI R17,2 BRNE PRTD1 ;24小时制,转 SUBI R16,$12 RCALL SUDAA BRCC PRTD1 ;12小时制处理 SUBI R16,-18 PRTD1: MOV R17,R16 SWAP R16 ANDI R16,$0F ANDI R17,$0F STS $6F,R16 STS $70,R17 ;小时数据送入显示区 RJMP WCRT WDATE: RCALL WRTC ;将显示缓存区中日期数据写入RTC LDI XL,$6F LD R16,X CPI R16,10 BRCC WDRT ;非法数据,退出 LDI YL,6 WDLP: LD R16,X DEC R26 CPI R16,$24 ;SPC? BRNE WD0 CLR R16 ;变为0 WD0: ST Y+,R16 CPI R26,$6D BRNE WD1 ;$6d 6e 6f 70 71 72 73

文档评论(0)

1亿VIP精品文档

相关文档