You are on page 1of 7

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TP. HCM


KHOA CÔNG NGHỆ CƠ KHÍ

BÀI 9: LẬP TRÌNH CHUYỂN ĐỔI TÍN HIỆU TƯƠNG TỰ VÀ TÍN


HIỆU SỐ

TP. HỒ CHÍ MINH, 2023


Chương trình tham khảo lập trình điều khiển ADC
int_0804 equ p3.5 //kiểm tra xem có ngắt từ ADC hay không
rd_0804 eqeu 3.7 //đọc dữ liệu từ ADC
wr_0804 equ 3.6 //ghi dữ liệu vào ADC
datum equ p0 //chân đầu vào
wet equ p2 //chân đầu ra
bien_1 equ r0 //khai báo bien_1 là thanh ghi r0 lưu trữ dữ liệu
org 0000h //địa chỉ bắt đầu chương trình
jmp ct_chinh //nhảy đến nhãn ct_chinh thực hiện chương trình
org 0023h //thực hiện ngắt nguồn
jmp ct_ngat_nt //nhảy đến nhãn ct_ngat_nt để ngắt nguồn
org 0030h //thực hiện thao tác chính
ct_chinh:
mov ie,#90h //cài đặt để cho phép ngắt từ ADC
mov tmod,#20h //cài đặt chế độ 8-bit tự động nạp đè
mov th1,#-6 //gán giá trị -6 vào thanh ghi th1
mov scon,#50h //gán giá trị 50 vào thanh ghi scon
setb tr1 //thiết lập tr1 lên 1
mov dptr,#hi //gán giá trị hi vào thanh ghi dptr
mov bien_1,#35 //gán giá trị 35 vào bien_1
main:
clr wr_0804 //xóa cờ wr_080
setb wr_0804 //thiết lập cờ wr_0804 lên 1
H:
Jb int_0804,H //kiểm tra nếu =1 thì nhảy tới H
Clr rd_0804 // xóa cờ rd_0804
Mov r5,#30 //gán giá trị 30 vào thanh ghi r5
Mov bien_1,p1 //gán giá trị thanh ghi p1 vào bien_1
Mov sbuf, bien_1 //gán giá trị bien_1 vào thanh ghi sbuf
Call decode //gọi chương trình decode
H1: call show //gọi chương trình show
Djnz r5,H1 // giảm r5 đi 1 đơn vị nếu khác 0 nhảy đến H1
Setb rd_0804 //thiết lập rd_0804 lên 1
Jmp main //nhảy đến main thực hiện vòng lặp
Ct_ngat_nt:
Clr ti //xóa cờ ti
Reti //kết thúc nguồn
Decode:
Mov a,bien_1 //gán giá trị bien_1 vào thanh ghi a
Mov b,#10 //gán giá trị 10 vào thanh ghi b
Div ab //thực hiện phép chia cho thanh ghi a và b
Mov 30h,a //lưu số hàng chục bien_1
Mov 31h,b //lưu số hàng đơn vi bien_1
Mov a,30h //gán giá trị 30h vào thanh ghi a
Movc a,@a+dptr
Mov 30h,a //mã 7 đoạn chuc bien_1
Mov a,31h
Movc a,@a+dptr
Mov 31h,a //mã 7 đoạn đơn vị bien_1
Show:
Call decode //gọi chương trình con decode
Mov wet,#11111101b
Mov datum,31h //xuat ma 7 doan don vi bien_1
Call delay //tạo độ trễ
Mov datum,#0ffh //tắt led chống lem
Mov wet,#11111110b
Mov datum,30h //xuat ma 7 doan chuc bien_1
Call delay //gọi chương trình con delay
Mov datum,#0ffh //tắt led chống lem
Ret
Delay:
Mov r3,#6
L1: mov r4,#250
Djnz r4,#$
Djnz r3,L1
Ret
HI:
Db 0c0h,0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h
end
chương trình tham khảm sử dụng ADC0809
start equ p3.3 //bắt đầu chương trình tại chân p3.3
ale equ p3.4 //chọn đường dữ liệu
oe equ p3.0 //cho phép dữ liệu đầu ra
eoc equ p3.2 //xác định khi quá trình chuyển đổi
add0 equ p3.4 //truyền dữ liệu và nhận dữ liệu
add1 equ p3.5
add2 equ p3.6
datum equ p0 //chân đầu vào
wet equ p2 //chân đầu ra
bien_1 equ p0
org 0000h
mov dptr,#HI //gán giá trị hi vào thanh ghi dptr
clr ale //xóa cờ ale
clr start //xóa cờ start
clr oe //xóa cờ oe
setb eoc //thiết lập cờ eoc lên 1
mov p1,#00h //gán giá trị 00h vào p1
main: setb ale //thiết lập bit ale lên 1
setb add0 //thiết lập bit add0 lên 1
setb add1
setb add2
setb start //thiết lập bit start lên 1
clr ale //xóa cờ ale
clr start //xóa cờ start
H: jnb eoc,H //kiểm tra chân eoc có trạng thái ko nếu không nhảy đến nhãn H
Set oe //thiết lập cờ oe lên 1
Clr oe //xóa cờ oe
Setb eoc //thiết lập bit eoc lên 1
mov r5,#30 //gán giá trị 30 vào r5
mov bien_1,p1 //chuyển giá trị p1 vào bien_1
call decode //gọi hàm decode
H1: call show //gọi hàm show
Djnz r5,H1 //giảm giá trị r5 đi 1 đơn vị nếu r5 khác 0 nhảy đến H1
Jmp main //nhảy đến nhãn main
Decode:
MOV A,BIEN_1 //gán bien_1 vào A
Mov B,#10 //gán 10 vào B
Div AB //chia 2 giá trị thanh ghi A và B
Mov 30h,A //gán A vào thanh ghi 30h
Mov 31h,B //gán B vào thanh ghi B
Mov A,30h //gán 30 vào thanh A
Movc a,@a+dptr
Mov 30h,a
Mov a,31h
Movc a,@a+dptr
Mov 31h,a
Show:
Call decode //gọi hàm decode
Mov wet,#11111101b
Mov datum,31h //gán 31 vào datum
Call delay //gọi hàm delay tạo độ trễ
Mov datum,#0ffh //tắt led chống lem
Mov wet,#11111110b
Mov datum,30h //gán 30 vào datum
Call delay
Mov datum,#0ffh
Ret
H1:
Db 0c0h,0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h
Delay:
Mov r3,#6
L1: mov r4,#250
Djnz r4,#$
Djnz r3,L1
Ret
End

You might also like