
*C¸c chØ dÉn cña hîp ng÷:
• Ch dn include
©y là ch dn cho chng tr×nh dch bit ni lu gi th vin c¸c
thanh ghi .
CÊu tróc:
#include <th vin bn cn s dng>
Khi viÕt chng tr×nh cho MCS51
#include <sfr51.inc>
• Ch dn ORG : Ch dn này gióp cho chng tr×nh dch bit c m·
lnh theo sau ch dn này.
c ghi vào t a ch nào trong ROM.
• Ch dn END: Ch dn này th«ng b¸o cho chng tr×nh dch bit
chng tr×nh ®· kt thóc.
• ChØ dÉn EQU: §−îc dïng ®Ó ®Þnh nghÜa mét h»ng sè. ChØ dÉn EQU
kh«ng sö dông « nhí ®Ó cÊt d÷ liÖu, mµ thùc hiÖn g¸n mét h»ng sè cho nh·n
sao cho khi nh·n xuÊt hiÖn trong ch−¬ng tr×nh th× gi¸ trÞ h»ng sè sÏ ®−îc thay
thÕ cho nh·n.
• ChØ dÉn DB: DB lµ chØ dÉn d÷ liÖu 8 bit vµ ®−îc sö dông hÕt søc réng
r·i khi lËp tr×nh hîp ng÷, 8 bit d÷ liÖu ®−îc ®Þnh nghÜa cã thÓ ë d¹ng thËp
ph©n, nhÞ ph©n , Hexa hay Ascii. §èi víi d÷ liÖu thËp ph©n th× cã “D” sau sè
thËp ph©n, sè nhÞ ph©n th× cã ch÷ “B” vµ d÷ liÖu d¹ng Hexa th× cã ch÷ “H” vµ
dï d÷ liÖu ë d¹ng nµo th× hîp ng÷ lu«n chuyÓn vÒ d¹ng hexa.
§Ó lËp tr×nh cho 8051 cã rÊt nhiÒu phÇn mÒm nh−ng c¸c lËp tr×nh
khuyªn lµ khi lËp tr×nh cho 8051 nªn sö dông phÇn mÒm Reads51. Sau khi
ch¹y file reads51.exe ta cã giao diÖn cña reads51 sau ®ã vµo Project chän
New project vµ ®Æt tªn sau ®ã nhÊn ok. TiÕp theo nhÊn chuét ph¶i vµo tªn vµ
chän Create New Module ®Æt tªn vµ lùa chän ng«n ng÷ lËp tr×nh. Sau khi lËp
tr×nh xong nhÊn F2 ®Ó dÞch ra file Hex
Giao diÖn cña Read51 nh− sau:

H×nh 5.6 - Giao diÖn cña Reads51.
Sau khi lËp tr×nh vµ dÞch ch−¬ng tr×nh xong ta tiÕn hµnh n¹p ch−¬ng
tr×nh vµo chÝp. §Ó n¹p ch−¬ng tr×nh cho bÊt kú mét chÝp vi ®iÒu khiÓn nµo th×
®Òu cÇn cã mét ch−¬ng tr×nh ®Ó n¹p. §èi víi hä 8051 phÇn mÒm ®−îc sö dông
phæ biÕn ®ã lµ EZDL víi c¸c phiªn b¶n EZDL.4, EZDL.4.1, EZDL.4.2.
Sau khi ch¹y file EZDL.4.1.exe nhÊn vµo send, chän file cÇn n¹p cã
®u«i .hex vµ ok, thÕ lµ ch−¬ng tr×nh sÏ ®−îc n¹p vµo chÝp
Giao diÖn cña phÇn mÒm n¹p chÝp cña 8051 nh− sau:
H×nh 5.7 - Giao diÖn cu¶ phÇn mÒm EZDL.4.1.
Sau ®©y lµ ch−¬ng tr×nh ®o vµ ®iÒu khiÓn nhiÖt ®é khÝ sÊy:

5.2.3. Ch−¬ng tr×nh ®o vµ ®iÒu khiÓn nhiÖt ®é khÝ sÊy n«ng s¶n d¹ng h¹t.
; ------------- READS51 generated header --------------
; created : 15:56:56, Friday, November 25, 2005
; -----------------------------------------------------
; CHUONG TRINH DIEU KHIEN NHIET DO KHI SAY NONG SAN DANG HAT
; SVTH : NGUYEN THI THU HIEN - LOP TDH46
; GVHD : Ths.NGUYEN THI HOAI SON
#include <sfr51.inc>
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP Interrupt0
ORG 0013H
LJMP Interrupt1 ; Nhay den ngat ngoai INT1
; Chuong trinh chinh
MAIN:
MOV R7,#50
MOV P0,#0ffh ; Chon P0 lam cong vao
MOV IE,#10000110B ; Cho phep ngat ngoai 0,1
MOV IP,#00000001B ; Uu tien ngat mgoai0
MOV R5,#0 ; De dem so ngat 0 xay ra
MOV R4,#00h ; Thanh ghi thap cua T0
MOV R3,#DCh ; Thanh ghi cao cua T0
ACALL Display
Back:
MOV A,#CBh
ACALL Command
CLR P1.4 ; Cho CS = 0 de kich hoat chip
CLR P1.3

nop
nop
nop
SETB P1.3 ; Gui xung thap len cao toi WR de bat dau chuyen doi
Here1:
JB P3.7,Here1 ;Cho ket thuc chuyen doi khi INT=0
CLR P1.2 ; Ket thuc chuyen doi cho phep doc du lieu RD=0
MOV R6,P0 ; Luu tru gia tri doc duoc tu ADC
MOV A,P0 ; Doc du lieu vao A
ACALL Ascii ; Chuyen doi tu so Hexa ra ma Ascii
ACALL Delay
SETB P1.2
SJMP Back
; Chuong trinh con hien thi len LCD nhiet do dat va nhiet do lo say
Display:
Acall LCD_init
ACALL Ndodat
ACALL Ndolo
RET
; Chuong trinh con tao tre
Delay:
MOV R0,#FFH
Delay1:
MOV R1,#FFH
Delay2:
NOP
NOP
DJNZ R1,Delay2
DJNZ R0,Delay1
RET

; Chuong trinh con khoi tao LCD
LCD_init:
MOV A,#38H ; LCD 2 dong ma tran 5x7
ACALL Command ; Goi chuong trinh con lenh
MOV A,#0CH ; Bat hien thi, tat con tro
ACALL Command
MOV A,#01H ; Xoa man hinh
ACALL Command
MOV A,#06H ;Dich hien thi sang phai
ACALL Command
MOV A,#80H ; Dua con tro tro ve dau dong thu nhat
ACALL Command
RET
; Chuong trinh con hien thi nhiet do dat
Ndodat:
MOV R1,#11
MOV DPTR,#STR1
Read1:
CLR A ; Xoa A
MOVC A,@A+DPTR ; Xuat mot ki tu
ACALL Datastr
INC DPTR
DJNZ R1,Read1
MOV A,R7
ACALL Ascii
RET
; Chuong trinh con hien thi nhiet do lo say
Ndolo:
MOV A,#C0H ; Dua con tro ve dau dong thu 2

