chào các bác.em bị dính cái đồ án môn thế này: yêu cầu thiết kế mạch đo và hiển thị nhiệt độ trên led 7 thanh từ cảm biến DS18B20.em có làm mà nó không chạy.bác nào biết chỉ giáo dùm em.con có mấy ngày nữa em phải nộp rồi.thanhk các bác nhiều :
yahoo của e em : quocbaonb
toàn bộ đây ạ: http://www.mediafire.com/?dnwmynjgnin
code :
;================================================= ============
;Chuong trinh
; Update : 04/04/2010 nhom 16
;================================================= ============
org 0000H ;Vector Reset
ljmp Init ;Nhay toi chuong trinh khoi tao
org 0003H ;Vector ngat ngoai INT0
ljmp READ_DS18B20 ;nhay toi ctcpvn doc du lieu tu DS18B20
org 000BH ;Vector ngat tran T0
reti
org 0013H ;Vector ngat ngoai INT1
reti
org 001BH ;Vector ngat tran T1
reti
org 0023H ;Vector ngat cong truyen thong
reti
org 002BH ;Vector ngat tran T2
ljmp HT_LED ;nhay toi ctcpnv tran T2 de dieu
;khien LED
;================================================= ============
;Phan khai bao cac bien so, hang so
;================================================= ============
Num equ 50H ;chua so lan an nut chon lua
dq1 equ p1.0
dq2 equ p1.1
dq3 equ p1.2
templow equ 50h
temphigh equ 51h
bytethap equ 52h
bytecao equ 53h
chucnhietdo equ 54h
dvnhietdo equ 55h
dem equ 56h
Dn equ 5AH ;xac dinh Digit can hien thi
;================================================= ============
;Chuong trinh con khoi tao
;================================================= ============
org 100
Init:
clr EA ;Cam tat ca cac ngat
mov SP,#2FH ;Khoi tao ngan xep
mov T2CON,#00H ;T2 lam viec o che do Auto_reload
mov TH2,#0D8H ;voi chu ky ngat la 10ms
mov TL2,#0F0H
mov RCAP2H,TH2
mov RCAP2L,TL2
setb IT0 ;dat INT0 ngat suon xuong
mov a,#0FFH ;chon P1 lam cong vao nhan du lieu
mov P1,a
mov D0,#0 ;Khoi tao so hien thi ban dau la 000
mov Dn,#0 ;cho D0 hien thi
mov R0,#D0 ;(R0) chua dia chi cua D0
mov R7,#01H ;cho D0 sang
setb TR2 ;cho phep T2 lam viec
setb EX0 ;cho phep ngat ngoai INT0
setb IE.5 ;cho phep ngat tran T2
setb EA ;Cho phep tat ca cac ngat
here:
sjmp here ;Doi ngat
;================================================= ============
;Interrupt READ_DS18B20
;thuc hien doc du lieu tu cam bien DS18B20
;Input : None
;Ouput : (Num) chua so lan an nut N
;================================================= ============
READ_DS18B20:
clr IE0 ;xoa co bao ngat
inc Num ;dem so lan an
mov a,Num ;chuyen so lan an nut vao thanh ghi ACC
mov b,#3 ;nap gia tri chia "3"
div ab ;thuc hien phep chia,lay phan du
clr a
mov a,b
jnz cambien2
setb P2.4
clr P2.5
clr P2.6
clr P1.1
clr P1.2
sjmp write_time_slot
org 0040H
write_time_slot:
clr dq3
nop
nop
mov dq3,c
mov r5,#30
call delayne
setb dq3
nop
nop
ret
read_time_slot:
clr dq3
nop
nop
setb dq3
nop
nop
nop
nop
nop
nop
nop
nop
mov c,dq3
mov r5,#50
call delayne
ret
reset_ds1820:
clr dq3
mov r5,#255
call delayne
setb dq3
mov r5,#255
call delayne
ret
write_byte:
mov dem,#8
write_lai:
rrc a
call write_time_slot
djnz dem,write_lai
setb dq3
mov r5,#50
call delayne
ret
read_byte:
mov dem,#8
readlai1:
call read_time_slot
rrc a
djnz dem,readlai1
mov templow,a
mov dem,#8
readlai2:
call read_time_slot
rrc a
djnz dem,readlai2
mov temphigh,a
mov r5,#50
call delayne
ret
delayne:
djnz r5,$
ret
readnhietdo:
setb dq3
readnhietdo1:
call reset_ds1820
mov a,#0cch
call write_byte
mov a,#44h
call write_byte
call reset_ds1820
mov a,#cch
call write_byte
mov a,#beh
call write_byte
call read_byte
mov a,templow
mov bytethap,a
mov a,temphigh
mov bytecao,a
call chuyendoi
call reset_ds1820
ret
chuyendoi:
push 00h
mov a,temphigh
swap a
mov 44h,a ;----xxxx
mov a,templow
swap a
mov 45h,a
mov a,44h
mov r0,#45h
xchd a,@r0
mov 46h,a
mov a,46h
mov b,#10
div ab
mov chucnhietdo,a
mov dvnhietdo,b
pop 00h
ret
Cambien2:
cjne a,#1,CAMBIEN3
clr P2.4
setb P2.5
clr P2.6
;////(chuong trinh doc du lieu DS18B20-2)
Cambien3:
clr P2.4
clr P2.5
setb P2.6
;////(chuogn trinh doc du lieu DS18B20-3)
clr a
HERE3:
sjmp HERE3
reti
;================================================= ============
;Interrupt HT_LED
;thuc hien dieu khien cac LED (D2,D1,D0) hien thi nhiet do cac cam bien
;Input : None
;Ouput : None
;================================================= ============
HT_LED:
clr TF2 ;xoa co bao ngat tran T2
mov a,Num
mov b,#100
div ab ;doi so can hien thi sang ma BCD
mov dptr,#SEG
movc a,@a+dptr ;doi ra ma bay thanh D2
mov D2,a
mov a,b
mov b,#10
div ab
mov dptr,#SEG
movc a,@a+dptr ;doi ra ma bay thanh D1
mov D1,a
mov a,b
mov dptr,#SEG
movc a,@a+dptr ;doi ra ma bay thanh D0
mov D0,a
;==============================================
;Hien thi quet cac LED
;==============================================
mov a,@R0 ;a chua dia chi @R0
mov P2,R7 ;cho phep Digit sang
mov P0,a ;gui so lieu can hien thi ra P0
inc R0 ;chuyen sang Digit tiep theo
mov a,R7
rl a ;chuyen sang Digit tiep theo
mov R7,a
inc Dn
mov a,Dn
cjne a,#3,KT_HT ;Kiem tra de quet lai tu dau
mov R0,#D0
mov Dn,#0
mov R7,#01H
KT_HT:
reti
;================================================= ============
;bang ma bay thanh
;================================================= ============
SEG:
db 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H,90H
; 0 1 2 3 4 5 6 7 8 9
;================================================= ============
END.
yahoo của e em : quocbaonb
toàn bộ đây ạ: http://www.mediafire.com/?dnwmynjgnin
code :
;================================================= ============
;Chuong trinh
; Update : 04/04/2010 nhom 16
;================================================= ============
org 0000H ;Vector Reset
ljmp Init ;Nhay toi chuong trinh khoi tao
org 0003H ;Vector ngat ngoai INT0
ljmp READ_DS18B20 ;nhay toi ctcpvn doc du lieu tu DS18B20
org 000BH ;Vector ngat tran T0
reti
org 0013H ;Vector ngat ngoai INT1
reti
org 001BH ;Vector ngat tran T1
reti
org 0023H ;Vector ngat cong truyen thong
reti
org 002BH ;Vector ngat tran T2
ljmp HT_LED ;nhay toi ctcpnv tran T2 de dieu
;khien LED
;================================================= ============
;Phan khai bao cac bien so, hang so
;================================================= ============
Num equ 50H ;chua so lan an nut chon lua
dq1 equ p1.0
dq2 equ p1.1
dq3 equ p1.2
templow equ 50h
temphigh equ 51h
bytethap equ 52h
bytecao equ 53h
chucnhietdo equ 54h
dvnhietdo equ 55h
dem equ 56h
Dn equ 5AH ;xac dinh Digit can hien thi
;================================================= ============
;Chuong trinh con khoi tao
;================================================= ============
org 100
Init:
clr EA ;Cam tat ca cac ngat
mov SP,#2FH ;Khoi tao ngan xep
mov T2CON,#00H ;T2 lam viec o che do Auto_reload
mov TH2,#0D8H ;voi chu ky ngat la 10ms
mov TL2,#0F0H
mov RCAP2H,TH2
mov RCAP2L,TL2
setb IT0 ;dat INT0 ngat suon xuong
mov a,#0FFH ;chon P1 lam cong vao nhan du lieu
mov P1,a
mov D0,#0 ;Khoi tao so hien thi ban dau la 000
mov Dn,#0 ;cho D0 hien thi
mov R0,#D0 ;(R0) chua dia chi cua D0
mov R7,#01H ;cho D0 sang
setb TR2 ;cho phep T2 lam viec
setb EX0 ;cho phep ngat ngoai INT0
setb IE.5 ;cho phep ngat tran T2
setb EA ;Cho phep tat ca cac ngat
here:
sjmp here ;Doi ngat
;================================================= ============
;Interrupt READ_DS18B20
;thuc hien doc du lieu tu cam bien DS18B20
;Input : None
;Ouput : (Num) chua so lan an nut N
;================================================= ============
READ_DS18B20:
clr IE0 ;xoa co bao ngat
inc Num ;dem so lan an
mov a,Num ;chuyen so lan an nut vao thanh ghi ACC
mov b,#3 ;nap gia tri chia "3"
div ab ;thuc hien phep chia,lay phan du
clr a
mov a,b
jnz cambien2
setb P2.4
clr P2.5
clr P2.6
clr P1.1
clr P1.2
sjmp write_time_slot
org 0040H
write_time_slot:
clr dq3
nop
nop
mov dq3,c
mov r5,#30
call delayne
setb dq3
nop
nop
ret
read_time_slot:
clr dq3
nop
nop
setb dq3
nop
nop
nop
nop
nop
nop
nop
nop
mov c,dq3
mov r5,#50
call delayne
ret
reset_ds1820:
clr dq3
mov r5,#255
call delayne
setb dq3
mov r5,#255
call delayne
ret
write_byte:
mov dem,#8
write_lai:
rrc a
call write_time_slot
djnz dem,write_lai
setb dq3
mov r5,#50
call delayne
ret
read_byte:
mov dem,#8
readlai1:
call read_time_slot
rrc a
djnz dem,readlai1
mov templow,a
mov dem,#8
readlai2:
call read_time_slot
rrc a
djnz dem,readlai2
mov temphigh,a
mov r5,#50
call delayne
ret
delayne:
djnz r5,$
ret
readnhietdo:
setb dq3
readnhietdo1:
call reset_ds1820
mov a,#0cch
call write_byte
mov a,#44h
call write_byte
call reset_ds1820
mov a,#cch
call write_byte
mov a,#beh
call write_byte
call read_byte
mov a,templow
mov bytethap,a
mov a,temphigh
mov bytecao,a
call chuyendoi
call reset_ds1820
ret
chuyendoi:
push 00h
mov a,temphigh
swap a
mov 44h,a ;----xxxx
mov a,templow
swap a
mov 45h,a
mov a,44h
mov r0,#45h
xchd a,@r0
mov 46h,a
mov a,46h
mov b,#10
div ab
mov chucnhietdo,a
mov dvnhietdo,b
pop 00h
ret
Cambien2:
cjne a,#1,CAMBIEN3
clr P2.4
setb P2.5
clr P2.6
;////(chuong trinh doc du lieu DS18B20-2)
Cambien3:
clr P2.4
clr P2.5
setb P2.6
;////(chuogn trinh doc du lieu DS18B20-3)
clr a
HERE3:
sjmp HERE3
reti
;================================================= ============
;Interrupt HT_LED
;thuc hien dieu khien cac LED (D2,D1,D0) hien thi nhiet do cac cam bien
;Input : None
;Ouput : None
;================================================= ============
HT_LED:
clr TF2 ;xoa co bao ngat tran T2
mov a,Num
mov b,#100
div ab ;doi so can hien thi sang ma BCD
mov dptr,#SEG
movc a,@a+dptr ;doi ra ma bay thanh D2
mov D2,a
mov a,b
mov b,#10
div ab
mov dptr,#SEG
movc a,@a+dptr ;doi ra ma bay thanh D1
mov D1,a
mov a,b
mov dptr,#SEG
movc a,@a+dptr ;doi ra ma bay thanh D0
mov D0,a
;==============================================
;Hien thi quet cac LED
;==============================================
mov a,@R0 ;a chua dia chi @R0
mov P2,R7 ;cho phep Digit sang
mov P0,a ;gui so lieu can hien thi ra P0
inc R0 ;chuyen sang Digit tiep theo
mov a,R7
rl a ;chuyen sang Digit tiep theo
mov R7,a
inc Dn
mov a,Dn
cjne a,#3,KT_HT ;Kiem tra de quet lai tu dau
mov R0,#D0
mov Dn,#0
mov R7,#01H
KT_HT:
reti
;================================================= ============
;bang ma bay thanh
;================================================= ============
SEG:
db 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H,90H
; 0 1 2 3 4 5 6 7 8 9
;================================================= ============
END.
Comment