Chuong Trinh Dung AT Mega 8535 Do Nhiet Do
Chuong Trinh Dung AT Mega 8535 Do Nhiet Do
; Chon thiet bi .
.device AT90S8535
;Interrupt Vectors
.org 0
rjmp init ;Reset
.org ADCCaddr ;ADC Conversion Complete
rjmp ADC_int
;-----------------------------------------------
;Han khoi tao
;Initialization
ganseg0:
mov r16,seg0 ; Lay du lieu hang tram
rjmp loopsub
ganseg1:
mov r16,seg1 ; Lay du lieu hang chuc
rjmp loopsub
ganseg2:
mov r16,seg2 ; Lay du lieu hang don vi
rjmp loopsub
ganseg3:
mov r16,seg3 ; Lay du lieu cho chu C
rjmp ganchuC
loopsub:
ldi r17, 1 ; Lay r17 = 1 de so sanh
clc ; Xoa co nho
sub r16, r17
brcs ganso0 ; neu r16<1
sub r16, r17
brcs ganso1 ; neu r16<2
sub r16, r17
brcs ganso2 ; neu r16<3
sub r16, r17
brcs ganso3 ; neu r16<4
sub r16, r17
brcs ganso4 ; neu r16<5
sub r16, r17
brcs ganso5 ; neu r16<6
sub r16, r17
brcs ganso6 ; neu r16<7
sub r16, r17
brcs ganso7 ; neu r16<8
sub r16, r17
brcs ganso8 ; neu r16<9
sub r16, r17
brcs ganso9 ; neu r16=9
rjmp ganchuC
ganso0:
cpi r18,$77
brne ganso00
ldi r19,$00
rjmp exit ;Khong hien thi so 0
ganso00:
ldi r19,$3F ;So 0
rjmp exit
ganso1:
ldi r19,$06 ;So1
rjmp exit
ganso2:
ldi r19,$5B; ;So 2
rjmp exit
ganso3:
ldi r19,$4F; ;So 3
rjmp exit
ganso4:
ldi r19,$66; ;So 4
rjmp exit
ganso5:
ldi r19,$6D; ;So 5
rjmp exit
ganso6:
ldi r19,$7D; ;So 6
rjmp exit
ganso7:
ldi r19,$07 ;So 7
rjmp exit
ganso8:
ldi r19,$7F ;So 8
rjmp exit
ganso9:
ldi r19,$6F ;So 9
rjmp exit
ganchuC:
ldi r19,$39 ;ChuC
exit:
out PORTB,r18 ;Vi tri led can hien thi
out PORTC,r19 ;Du lieu can hien thi
;-----------------------------------------------
;Ham tao tre de duy tri thoi gian hien thi cho tung led
delay:
ldi temp, $30
d:
dec temp ;Giam temp = temp -1
brne d ;Neu chua bang 0 thi quay lai nhan d:
;-----------------------------------------------
rjmp loop ;Tro lai vong lap vo han
;-----------------------------------------------
;Ham chuyen doi so ADC 10 bit thanh so 4 chu so he thap phan
;Ham nay thuc hien khi xay ra ngat ADC - cap nhat gia tri moi cua ADC
;Gia tri lon nhat cua 10 bit la 1024
;Gia tri Vref = 2.048 V
;Qui doi gia tri 10bit x 2 = 1024 x 2 = 2048
;Voi LM35 thi 10mv/1C
;Vay gia tri gan dung la 10 dec <-> 1C
ADC_int:
cli ;Xoa ngat he thong
in r0,ADCL ;Doc gia tri byte thap cua ADC (2bit)
in r1,ADCH ;Doc gia tri byte cao cua ADC (8bit)
clc ;Xoa co nho
add r0,r0 ;Nhan doi gia tri r0
adc r1,r1 ;Nhan doi gia tri r1 co nho (r1:r0 11 bit)
;Convert and display value for output
;Start value taken to be in r1:r0
clr r4 ;r4 chua gia tri hang ngan
dc1a: mov r2,r0 ;Lay gia tri byte thap
mov r3,r1 ;Lay gia tri byte cao n x 256
ldi r16,$e8 ;Lay gia tri 232 = 1000 - 3x256
sub r2,r16 ;Gia tri byte thap tru di 232
ldi r16,$3 ;lay gia tr 3
sbc r3,r16 ;Gia tri byte cao tru di 3 - C
brcs dc1b ;Neu r1:r0 < 1000 nhay den dc1b
inc r4 ;Neu r1:r0 > 1000 thi tang them r4
mov r0,r2 ;ket qua r1:r0 - 1000 luu vao r0
mov r1,r3 ;ket qua r1:r0 - 1000 luu vao r1
rjmp dc1a ;Tiep tuc lay r1:r0 - 1000
dc1b: mov seg0,r4 ;Luu gia tri hang ngan vao seg0