C:\Users\MINH HAI\Desktop\VDK\DO NHIET DO.asm
#INCLUDE "p16f887.inc"
; __config 0xE0F7
__CONFIG _CONFIG1, _FOSC_EXTRC_CLKOUT & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF &
_BOREN_OFF & _IESO_OFF & _FCMEN_OFF & _LVP_OFF
; CONFIG2
; __config 0xFFFF
__CONFIG _CONFIG2, _BOR4V_BOR40V & _WRT_OFF
;------------------------khai bao bien--------------------cblock 0x20
nhietdo
tam0
dem
adc_value
adc
bat
den
so
dv
hc
tram
tam
d0
d1
d2
d3
endc
;----------------------------------------------------------ORG
goto
0x00
start
;
;
;************************************************************************************
;---------------------------bat dau chuong trinh o day -----------------------------start
;cai dat ngo vao ngo ra
banksel
TRISB
; chon bank chua thanh ghi TRISB
clrf
TRISB
; PortB la output
movlw
B'00000001'
movwf
TRISA
; chan RA0 input
clrf
TRISD
;-----------banksel
PORTA
clrf
PORTA
clrf
PORTB
clrf
PORTD
; chon loai
banksel
movlw
movwf
clrf
ngo vao AI hay DI
ANSEL
; chon bank chua thanh ghi ANSEL
B'00000001'
; AN0 la analog
ANSEL
; tat cac cac kenh con lai
ANSELH
; la digital
banksel
PORTB
;--------khai bao chuyen doi ADC------------------------------------------banksel
ADCON1
; chon bank chua thanh ghi ADCON1
movlw
0x80
movwf
ADCON1
banksel
movlw
movwf
ADCON0
B'10000001'
ADCON0
; chon bank chua ADCON0
; tan so xung doi Fosc/32,
; RA0 duoc su cho chuyen doi
; chuyen doi AD duoc bat/cho phep
;-------------------------chuong trinh chinh-------------------------------main
call
docADC; cap nhat gia tri moi, tach so cho hien thi
call
check_alarm ; kiem tra nhiet do cho phep va bat/tat canh bao (den, coi bao)
call
tachso
call
hienthi
;chuong trinh co nhien thi nhiet do ra led 7 doan
call
Delay2s
1
C:\Users\MINH HAI\Desktop\VDK\DO NHIET DO.asm
exit_main
goto
main
;------------------------------------------------------------------------------------;=====================================================================================
;------------------------------cac chuong trinh con----------------------------------hienthi; chuong trinh con hien thi nhiet do LED7 doan: XY0C
clrf
PORTD
movfw
hc
; hien thi hang chuc
call
bangma
movwf
PORTD
bcf
PORTB,4 ; bat led hang chuc
call
delay
bsf
PORTB,4 ; tat led hang chuc
movfw
call
movwf
bcf
call
bsf
dv
; hien thi hang don vi
bangma
PORTD
PORTB,5 ;bat led hang don vi
delay
PORTB,5 ;bat led hang don vi
movlw
movwf
bcf
call
bsf
0x9C
; hien thi ki hieu do "0"
PORTD
PORTB,6 ;bat led do
delay
PORTB,6 ; tat led
movlw
movwf
bcf
call
bsf
call
0xC6
; hien thi chu "C"
PORTD
PORTB,7 ;bat led hang
delay
PORTB,7 ;bat led hang
delay
return
;-----------chuong trinh2: doc adc : tra ve gia tri : "adc_tam" -----------docADC ; doc gia tri adc va luu vao bien adc_value
nop
bsf
btfsc
goto
ADCON0,1
ADCON0,1
$-1
; batdau chuyen doi adc
; chuyen doi xong ?
; chua xong ==1,kiem tra lai
banksel
movf
TRISB
ADRESL,0
banksel
movwf
bcf
rrf
bcf
movwf
movlw
subwf
PORTB
adc_value
STATUS,C
adc_value,0
STATUS,C
so
d'1'
so,1
;
;
;
;
;
chon bank1
byte thap la ket qua
copied to W
chon bank2
luu ket qua vao bien : adc_value
; w = adc_value/2 = nhiet do
; so = w
; cai phan la ta tru di 1 cho hien
; thi dung thoi
return
tachso ; tach nhiet do thanh 2 so BCD de hien thi LED 7 doan
clrf dv
clrf hc
tru
sai0
movlw
subwf
btfsc
goto
goto
d'10'
so,f
STATUS,C
sai0
dung0
incf
goto
hc,f
tru
2
C:\Users\MINH HAI\Desktop\VDK\DO NHIET DO.asm
dung0
movlw
addwf
movwf
d'10'
so,w
dv
return
;----------chuong trinh 1: ham kiem tra va bao chay-------------------------check_alarm ; kiem tra nhiet do cho phep va bat/tat canh bao (den, coi bao)
;
tatbd
banksel
movf
sublw
btfsc
goto
goto
bcf
bsf
goto
bsf
bcf
exit_check
return
batbd
PORTB
adc_value,0 ; gan w = adc_value
d'82' ; w = w-70
STATUS,C ; c == 0 ?
tatbd
; c = 1 : w < 82 hay nhiet do < 35oC
batbd
; c = 0 : w > 82 hay nhiet do lon hon 35oC
PORTB,0
PORTB,1
exit_check
PORTB,0
PORTB,1
;-------------chuong trinh 4: delay----------------------------------Delay
movlw
0x09
movwf
d0
Delay_0
decfsz
d0, f
goto
Delay_0
return
;--------------------------------------------------------------------Delay2s
movlw
movwf
movlw
movwf
movlw
movwf
Delay_2
decfsz
goto
decfsz
goto
decfsz
goto
0x5A
d1
0xCD
d2
0x16
d3
d1, f
$+2
d2, f
$+2
d3, f
Delay_0
nop
return
bangma
addwf
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
PCL,f
0xc0
0xf9
0xa4
0xb0
0x99
0x92
0x82
0xf8
0x80
0x90
end
;----------------------------------------------------------------------
3