DELAY1: WDR ; RESET WDT
IN R22, TCNT1L
SUB R22, R23
CP R22, R24
BRLO DELAY1
RET
;******************************************
; DELAY , MIN=64ms, MAX=16Sec
; INPUT: R24
; USED REGISTER: R24,R23,R22
;******************************************
DL64MS: IN R23, TCNT1L
IN R23, TCNT1H ; T1 COUNTER’S f=FCLK/1024
DL64MS1: WDR ; RESET WDT
IN R22, TCNT1L
IN R22, TCNT1H
SUB R22, R23
CP R22, R24
BRLO DL64MS1
RET
;*********************************************
; DECIL-->HEX
; INPUT: XL
; OUTPUT: YL=XL.(b7b6b5b4)*10 + XL.(b3b2b1b0)
; USED REGISTER: XL,XH,YL,YH
;*********************************************
DECHEX: MOV YL, XL ;XL.(b7b6b5b4)-->YL.(b3b2b1b0)
ANDI XL, $0F ;
ANDI YL, $F0 ;
SWAP YL ;
LSL YL ;YL*2
MOV XH, YL ;YL-->XH
LSL YL ;YL*4
LSL YL ;
ADD YL, XH ;
ADC YL, XL ;
RET ;
;*********************************************
; HEX-->DECIL
; INPUT: XL
; OUTPUT: YL=(((((((b7*2+b6)+b5)*2+...)*2+b0
; USED REGISTER: XL,YL,YH,ZL,ZH
;*********************************************
HEXDEC: CLR YL
LDI ZL, 6
LDI ZH, 8
HEXDEC1: CLC
ROL XL
ROL YL
SBRC YL, 4
ADD YL, ZL
MOV YH, YL
ANDI YH, $0F
CPI YH, $0A
BRLO HEXDEC2
ADD YL, ZL
HEXDEC2: DEC ZH
BRNE HEXDEC1
RET
;********************************
; READ LCD
; INPUT: XL=Addr(A7--A0)
; OUTPUT: XL
;********************************
READ: CBI PORTA, CS ;CS=0
LDI XH, 0B01100000 ;
ORI XH, 1<<RD ;WR=0
OUT PORTA, XH ;
RCALL WAIT ;
SBI PORTA, WR ;WR: 0-->1
RCALL WAIT ;
MOV XH, XL ;
ANDI XH, 0XF0 ;
ORI XH, 1<<RD ;WR=0
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
本文关键字:单片机 程序 AVR单片机,单片机-工控设备 - AVR单片机