Xem mẫu

  1. *C¸c chØ dÉn cña hîp ng÷: • Ch d n include ©y là ch d n cho ch ng tr×nh d ch bi t n i l u gi th vi n c¸c thanh ghi . CÊu tróc: #include Khi viÕt ch ng tr×nh cho MCS51 #include • Ch d n ORG : Ch d n này gióp cho ch ng tr×nh d ch bi t c m· l nh theo sau ch d n này. c ghi vào t a ch nào trong ROM. • Ch d n END: Ch d n này th«ng b¸o cho ch ng tr×nh d ch bi t ch ng tr×nh ®· k t 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:
  2. 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:
  3. 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 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
  4. 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
  5. ; 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
  6. ACALL Command ; Xuat lenh MOV R1,#11 MOV DPTR,#STR2 Read2: CLR A ; Xoa A MOVC A,@A+DPTR ; Xuat mot ki tu ACALL Datastr INC DPTR ; Tang Dptr DJNZ R1,Read2 RET ; Chuong trinh de LCD thuc hien lenh Command: ACALL Ready MOV P2,A ; Dua du lieu thanh ghi A ra cong P2 CLR P3.5 ; RS = 0, Cho phep thu hien lenh CLR P3.6 ; RW = 0, Cho phep ghi lenh SETB P3.4; E = 1 CLR P3.4 ; E = 0 RET ; Chuong trinh de LCD viet du lieu Datastr: ACALL Ready MOV P2,A ; Dua du lieu thanh ghi A ra cong P2 SETB P3.5; RS =1, Cho phep lam viec voi du lieu CLR P3.6 ; RW = 0, Cho phep ghi du lieu SETB P3.4; E = 1 CLR P3.4 ; E = 0 RET
  7. ; Chuong trinh kiem tra LCD da thuc hien xong lenh chua Ready: SETB P2.7; LCD dang ban CLR P3.5 ; RS=0 SETB P3.6; RW=1 Back1: CLR P3.4 ; E=0 SETB P3.4 ; E=1 JB P2.7,Back1 ;P2.7#0 quay ve BACK1 RET ; Chuong trinh chuyen doi tu so nhi phan ra ma Ascii Ascii: ; Chuyen doi tu so nhi phan ra BCD va luu vao o nho co dia chi ;30H,31H,32H MOV B,#10 DIV AB MOV R2,A MOV 32H,B MOV A,R2 MOV B,#10 DIV AB MOV 31H,B MOV 30H,A ; Chuyen tu BCD ra Acsii va cho hien thi len LCD MOV A,30H ORL A,#30H ACALL Datastr MOV A,31H ORL A,#30H
  8. ACALL Datastr MOV A,32H ORL A,#30H ACALL Datastr RET ; Chuong trinh vi dieu khien lam viec khi co ngat ngoai INT0 ORG 100H Interrupt0: ; dieu khien thyristor ; R6 luu tru gia tri tu ADC ; R7 luu tru gia tri nhiet do dat SETb P1.5 MOV TMOD,#01 ; Chon Timer0 che do 1 (16bit) ACALL NapT0 ACALL DelayT0 CLR P1.5; Kich thyristor CLR C; Xoa co nho De chi tru R7 cho R6 (khong phai tru cho co nho) MOV A,R7; Dua noi dung R7 vao A SUBB A,R6; Tru noi dung thanh ghi A cho noi dung thanh ghi R6 va co nho JNZ next1; Neu R6=R7 thi giu nguyen goc mo truoc do SJMP Wait Next1: JNC next2 ; Co nho khong duoc dat (R6 > R7) ; R6
  9. AGAIN : JNB TF0,AGAIN; Kiem tra co bo dinh thoi CLR TR0 ; Dung Timer0 CLR TF0 ; Xoa co bo dinh thoi 0 RET ; Chuong trinh VDK lam viec khi co ngat ngoai INT1 ORG 200H Interrupt1: Start: MOV A,P1 ACALL Delay ; Goi chuong trinh tao tre ANL A,#11000000B CJNE A,#00000000B,Case1 ; Neu la phim tang thi thuc hien tang nhiet ;do dat CJNE R7,#100,Tang SJMP Jump1 Tang: INC R7 ; Tang gia tri trong thanh ghi R7 Jump1: ACALL LCD_init ACALL Ndodat case1: CJNE A,#01000000B,Case2 ;Neu la phim giam thi thuc hien giam nhiet ;do dat CLR C MOV A,R7 SUBB A,R6 CJNE A,#0,Giam SJMP Jump2 Giam: DEC R7 ; Giam gia tri trong thanh ghi R7 Jump2: ACALL LCD_init ACALL Ndodat ; Goi chuong trinh hien thi nhiet do dat
  10. Case2:CJNE A,#10000000B,Start ; Neu la phim lua chon thi hien thi nhu ban ;dau khoi dong ACALL Ndolo RETI STR1: DB "N DO DAT :" STR2: DB "N DO BUONG:" END
nguon tai.lieu . vn