Giáo trình Kỹ thuật vi điều khiển - Chương 6: Phục lục - Lâm Tăng Đức
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
Ch−¬ngꢀVIꢀ
phô lôc
ꢀ
6.1ꢀH−íngꢀdÉnꢀsöꢀdôngꢀKITꢀ
Ng−êiꢀhäcꢀph¶iꢀn¾mꢀv÷ngꢀb¶nꢀ®åꢀbéꢀnhíꢀcñaꢀKITꢀsau:ꢀ
§ÞaꢀchØꢀ
ThiÕtꢀbÞꢀ
Ghiꢀchóꢀ
0000hꢀꢁꢀ1FFFhꢀ
4000hꢀꢁꢀ7FFFhꢀ
EEPROMꢀ Chøaꢀch−¬ngꢀtr×nhꢀMonitorꢀ
RAMꢀ
Chøaꢀch−¬ngꢀtr×nhꢀøngꢀdôngꢀ
8000hꢀꢁꢀPortAꢀ:ꢀ§iÒuꢀkhiÓnꢀLCD.ꢀ
8001hꢀꢁꢀPortBꢀ:ꢀDataꢀbusꢀcñaꢀLCD.ꢀ
8002hꢀꢁꢀPortCꢀ:ꢀNhËnꢀmꢂꢀcñaꢀbꢃnꢀphÝm.ꢀ
8003hꢀꢁꢀCWꢀꢀꢀꢀ:ꢀThanhꢀghiꢀ®iÒuꢀkhiÓn.ꢀ
8000hꢀꢁꢀ8003hꢀ
8004hꢀꢁꢀ8007hꢀ
8255ꢀ(1)ꢀ
8004hꢀ-ꢀPortA:ꢀ§iÒuꢀkhiÓnꢀcÊpꢀnguånꢀchoꢀc¸cꢀAnotꢀꢀ chungꢀ
cñaꢀLEDꢀmatrixꢀ(c¸cꢀhꢃng).ꢀ
8005hꢀꢁꢀPortB:ꢀ§iÒuꢀkhiÓnꢀ®ÌnꢀmꢃuꢀxanhꢀcñaꢀLEDꢀꢀ matrixꢀ
8255ꢀ(5)ꢀ (c¸cꢀcétꢀxanh).ꢀ
8006hꢀꢁꢀPortC:ꢀ§iÒuꢀkhiÓnꢀ®Ìnꢀmꢃuꢀ®áꢀcñaꢀLEDꢀꢀmatrixꢀ
(c¸cꢀcétꢀ®á).ꢀ
8007hꢀ-ꢀCW:ꢀThanhꢀghiꢀ®iÒuꢀkhiÓn.ꢀ
8008hꢀꢁꢀPortAꢀ:ꢀ§−êngꢀDataꢀcñaꢀADC0809.ꢀ
8009hꢀꢁꢀPortBꢀ:ꢀ§−êngꢀDataꢀcñaꢀDAC0808.ꢀ
800AhꢀꢁꢀPortCꢀ:ꢀ§iÒuꢀkhiÓnꢀADC0809.ꢀ
800BhꢀꢁꢀCWꢀꢀꢀꢀ:ꢀThanhꢀghiꢀ®iÒuꢀkhiÓn.ꢀ
8008hꢀꢁꢀ800Bhꢀ
800Chꢀꢁꢀ800Fhꢀ
8255ꢀ(2)ꢀ
800ChꢀꢁꢀPortAꢀ:ꢀ§ÇuꢀvꢃoꢀDigital.ꢀ
800DhꢀꢁꢀPortBꢀ:ꢀ§iÒuꢀkhiÓnꢀ®éngꢀc¬ꢀb−íc(PB0ꢁPB3)ꢀꢀ vꢃꢀ
®éngꢀc¬ꢀmétꢀchiÒuꢀ(PB4ꢀꢁꢀPB5).ꢀ
8255ꢀ(3)ꢀ 800EhꢀꢁꢀPortCꢀ:ꢀ4ꢀ®Çuꢀvꢃoꢀxungꢀd¹ngꢀnótꢀÊnꢀꢀꢀꢀꢀꢀꢀꢀꢀ(PC4ꢁ
PC7),ꢀ4ꢀ®Çuꢀvꢃoꢀchoꢀc¸cꢀthiÕtꢀbÞꢀngoꢃiꢀꢀnh−ꢀencoderꢀ(PC0ꢀꢁꢀ
PC3).ꢀ
800FhꢀꢁꢀCWꢀꢀꢀꢀ:ꢀThanhꢀghiꢀ®iÒuꢀkhiÓn.ꢀ
C000hꢀꢁꢀPortAꢀ:ꢀHiÓnꢀthÞꢀ8ꢀLEDꢀ®¬n.ꢀ
C001hꢀꢁꢀPortBꢀ:ꢀHiÓnꢀthÞꢀ2ꢀLEDꢀ7ꢀthanhꢀ(tr¸i).ꢀ
8255ꢀ(4)ꢀ
C000hꢀꢁꢀC003hꢀ
C002hꢀꢁꢀPortCꢀ:ꢀHiÓnꢀthÞꢀ2ꢀLEDꢀ7ꢀthanhꢀ(ph¶i).ꢀ
C003hꢀꢁꢀCWꢀꢀꢀꢀ:ꢀThanhꢀghiꢀ®iÒuꢀkhiÓn.ꢀ
8255ꢁEXꢀ BUSꢀmëꢀréngꢀdùꢀtr÷,ꢀcãꢀthÓꢀg¾nꢀthªmꢀ1ꢀmoduleꢀkh¸cꢀ
C004hꢀ–ꢀC007hꢀ
ꢀ
B¶ngꢀ2.1ꢀS¾pꢀxÕpꢀbéꢀnhíꢀvꢃꢀc¸chꢀph©nꢀ®ÞaꢀchØꢀchoꢀc¸cꢀthiÕtꢀbÞꢀngo¹iꢀviꢀcñaꢀKITꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ93ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
Sauꢀkhiꢀ®ꢂꢀn¾mꢀv÷ngꢀb¶nꢀ®åꢀbéꢀnhí,ꢀmétꢀsèꢀl−uꢀýꢀcÇnꢀph¶iꢀnhíꢀkhiꢀthÝꢀnghiÖmꢀvíiꢀKITꢀ
nh−ꢀsau:ꢀ
ꢁ NÕuꢀn¹pꢀch−¬ngꢀtr×nhꢀvꢃoꢀKITꢀ®Óꢀch¹yꢀëꢀchÕꢀ®éꢀ"Ch−¬ngꢀtr×nhꢀng−êiꢀsöꢀdông",ꢀtøcꢀ
ch¹yꢀ®écꢀlËpꢀvíiꢀch−¬ngꢀtr×nhꢀMONITORꢀqu¶nꢀlýꢀKITꢀth×ꢀch−¬ngꢀtr×nhꢀcñaꢀng−êiꢀ
häcꢀph¶iꢀb¾tꢀ®Çuꢀëꢀ®ÞaꢀchØꢀ00H,ꢀtøcꢀb¾tꢀ®Çuꢀch−¬ngꢀtr×nhꢀb»ngꢀlÖnhꢀORGꢀ0.ꢀSauꢀkhiꢀ
KITꢀb¸oꢀn¹pꢀhoꢃnꢀtÊtꢀth×ꢀÊnꢀc«ngꢀt¾cꢀMODEꢀSELECTꢀ®Óꢀëꢀtr¹ngꢀth¸iꢀhëꢀ(nh«ꢀlªn),ꢀ
tiÕpꢀ®ãꢀbÊmꢀnótꢀresetꢀ®Óꢀb¾tꢀ®Çuꢀch¹yꢀch−¬ngꢀtr×nhꢀcñaꢀm×nh.ꢀëꢀtr¹ngꢀth¸iꢀnꢃyꢀth×ꢀ
tÊtꢀc¶ꢀc¸cꢀtꢃiꢀnguyªnꢀphÇnꢀcøngꢀvꢃꢀc¸cꢀthiÕtꢀbÞꢀngo¹iꢀviꢀcñaꢀKITꢀ®Òuꢀ®−îcꢀphÐpꢀsöꢀ
dôngꢀmꢃꢀkh«ngꢀcãꢀmétꢀgiíiꢀh¹nꢀnꢃo.ꢀ
ꢁ NÕuꢀn¹pꢀvꢃoꢀ®Óꢀch¹yꢀëꢀchÕꢀ®éꢀDEBUGꢀꢁꢀgìꢀrèi,ꢀch¹yꢀvꢃꢀxemꢀkÕtꢀqu¶ꢀc¸cꢀvïngꢀnhíꢀ
sauꢀmçiꢀlÖnhꢀth×:ꢀ
o Ch−¬ngꢀtr×nhꢀph¶iꢀb¾tꢀ®ÇuꢀëꢀvÞꢀtrÝꢀ4000Hꢀ(vÞꢀtrÝꢀkhëiꢀ®ÇuꢀcñaꢀbéꢀnhíꢀRAM).ꢀ
ThùcꢀhiÖnꢀb»ngꢀlÖnhꢀORGꢀ4000H.ꢀ
o C¸cꢀvectorꢀng¾tꢀph¶iꢀ®−îcꢀcéngꢀthªmꢀ4000H.ꢀCôꢀthÓꢀnh−ꢀsau:ꢀ
ꢀ
§ÞaꢀchØꢀvectorꢀng¾tꢀëꢀ
chÕꢀ®éꢀb×nhꢀth−êngꢀ
0000Hꢀ
§ÞaꢀchØꢀvectorꢀng¾tꢀëꢀ
chÕꢀ®éꢀDEBUGꢀ
4000Hꢀ
Nguånꢀng¾tꢀ
Cêꢀ
ResetꢀhÖꢀthèngꢀ
Ng¾tꢀngoꢃiꢀ0ꢀ
Béꢀ®Þnhꢀthêiꢀ0ꢀ
Ng¾tꢀngoꢃiꢀ1ꢀ
Béꢀ®Þnhꢀthêiꢀ1ꢀ
PortꢀnèiꢀtiÕpꢀ
RSTꢀ
IE0ꢀ
0003Hꢀ
4003Hꢀ
TF0ꢀ
000BHꢀ
400BHꢀ
IE1ꢀ
0013Hꢀ
4013Hꢀ
TF1ꢀ
001BHꢀ
401BHꢀ
RIꢀorꢀTIꢀ
TF2ꢀorꢀEXF2ꢀ
0023Hꢀ
4023Hꢀ
Béꢀ®Þnhꢀthêiꢀ2ꢀ
002BHꢀ
402BHꢀ
ꢀ
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ94ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
o Ngoꢃiꢀraꢀng−êiꢀhäcꢀcßnꢀkh«ngꢀ®−îcꢀsöꢀdôngꢀng¾tꢀngoꢃiꢀ1ꢀ®ꢂꢀ®−îcꢀthiÕtꢀkÕꢀ®Óꢀ
phôcꢀvôꢀchÕꢀ®éꢀDEBUG.ꢀCßnꢀ®èiꢀvíiꢀng¾tꢀngoꢃiꢀ0ꢀnh−ꢀëꢀch−¬ngꢀ2ꢀ®ꢂꢀgiíiꢀ
thiÖu,ꢀphôcꢀvôꢀgiaoꢀtiÕpꢀvíiꢀbꢃnꢀphÝmꢀcñaꢀKIT.ꢀ
o VïngꢀnhíꢀRAMꢀnéiꢀ32ꢀbyteꢀtõꢀ7FHꢁ5FHꢀkh«ngꢀsöꢀdông,ꢀtuyꢀnhiªnꢀ128ꢀbyteꢀ
RAMꢀnéiꢀ®−îcꢀ®Þnhꢀ®ÞaꢀchØꢀgi¸nꢀtiÕpꢀcßnꢀl¹iꢀvꢃꢀ32ꢀKꢁByteꢀRAMꢀngoꢃiꢀ®−îcꢀ
söꢀdôngꢀtho¶iꢀm¸i.ꢀ
C¸cꢀh−íngꢀdÉnꢀcôꢀthÓꢀb»ngꢀh×nhꢀ¶nhꢀcñaꢀKITꢀsÏꢀ®−îcꢀtr×nhꢀbꢃyꢀëꢀphÇnꢀtrîꢀgiópꢀcñaꢀ
ch−¬ngꢀtr×nhꢀch¹yꢀtrªnꢀm«iꢀtr−êngꢀWindowsꢀ®iꢀkÌmꢀtheoꢀKIT,ꢀch−¬ngꢀtr×nhꢀhçꢀtrîꢀbiªnꢀ
dÞchꢀvꢃꢀdÞchꢀng−îcꢀc¸cꢀfileꢀch−¬ngꢀtr×nhꢀd¹ngꢀhîpꢀng÷,ꢀn¹pꢀvꢃꢀxãaꢀbéꢀnhíꢀEEPROMꢀcñaꢀ
KITꢀvꢃꢀmétꢀsèꢀbꢃiꢀvÝꢀdôꢀcñaꢀch−¬ngꢀtr×nhꢀnh−ꢀbꢃiꢀ7,ꢀthÝꢀnghiÖmꢀvÒꢀ"TruyÒnꢀth«ngꢀnèiꢀ
tiÕp"...ꢀꢀ
Sauꢀ®©yꢀsÏꢀlꢃꢀc¸cꢀkhaiꢀb¸oꢀmÉuꢀcñaꢀc¸cꢀch−¬ngꢀtr×nhꢀch¹yꢀ®−îcꢀtrªnꢀKITꢀcòngꢀnh−ꢀch−¬ngꢀ
tr×nhꢀMONITORꢀvꢃꢀc¸cꢀvÝꢀdô.ꢀ
ꢀ
6.2ꢀC¸cꢀkhaiꢀb¸oꢀvÒꢀ®ÞaꢀchØꢀc¸cꢀh»ngꢀvꢂꢀbiÕnꢀsèꢀsöꢀdôngꢀtrongꢀch−¬ngꢀtr×nhꢀ
MONITORꢀvꢂꢀtrongꢀc¸cꢀvÝꢀdôꢀDEMOꢀcñaꢀKITꢀ
; ##################################################################
;
CAC KHAI BAO
; ##################################################################
; Khai bao dia chi cua cac 8255
; 8255-1
LCD_CONTROL
EQU
8000H ; PA: Cac tin hieu dieu khien cua LCD 2408
; PA0 = LCD_RS; PA1 = RW; PA2=E1; PA3 = E2
LCD_DATA
KEYPAD
EQU 8001H ; PB: BUS data cua LCD 2408
EQU
EQU
8002H ; D0-D6 lam bus nhan ma phim
8003H ; Tu dieu khien CW cua 8255-1
CW1
; 8255-5
MATRIX_LED_ANOD EQU
8004H ; Cac hang`, tuc cac anod chung cua led ma tran
8005H ; Cac cot xanh cua LED ma tran
8006H ; Cac cot do cua LED ma tran
MATRIX_LED_G
MATRIX_LED_R
EQU
EQU
EQU
CW5
8007H ; Tu dieu khien CW cua 8255-5
; 8255-2
ADC_DB
ꢀ
EQU
8008H ; Bus du lieu cua ADC0809
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ95ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
DAC_DB
EQU
EQU
EQU
8009H ; Bus du lieu cua DAC0808
ADC_CONTROL
800AH ; Cac tin hieu dieu khien ADC0809
800BH ; Tu dieu khien CW cua 8255-2
CW2
; 8255-3
DIGITAL_INPUT
EQU
EQU
800CH ; Dau vao so
DC_STEPPER
800DH ; Dieu khien dong co buoc (PB0-PB3),
; dong co 1 chieu (PB4-PB7)
PULSE_INPUT
EQU
EQU
800EH ; 4 dau vao xung = nut(PC4-PC7),
; 4 tu cac nguon phat xung(PC0-PC3)
800FH ; Tu dieu khien CW cua 8255-3
CW3
;8255-4
LED_DON
EQU
EQU
EQU
EQU
0C000H ; Dieu khien hien thi 8 LED don
LED_7_DOAN_12
LED_7_DOAN_34
0C001H ; Dieu khien hien thi 2 LED 7 doan 1, 2 (ben trai')
0C002H ; Dieu khien hien thi 2 LED 7 doan 3, 4 (ben phai')
0C003H ; Tu dieu khien CW cua 8255-4
CW4
; Quy uoc cach dat ten hang` cua tu dieu khien nhu sau: CWx voi x la STT cua 8255
; 011 thu tu cac so la: PA, PB, PC; 0: dau ra, 1: dau vao
CW_011
CW_000
CW_100
CW_101
EQU
EQU
EQU
EQU
10001011B
10000000B
10010000B
10011001B
; ROM - RAM
EEPROM_ADDR
EQU
EQU
0000H ; Dia chi bat dau cua EEPROM - 8K - ket thuc o 1FFFH
4000H ; Dia chi bat dau cua RAM - 32K - ket thuc o 7FFFH
RAM_ADDR
; Dia chi cac dong` cua LCD 2408
DONG1
DONG2
DONG3
DONG4
EQU
EQU
EQU
EQU
0080H
0098H
00B8H
00D8H
; Chan ngat ngoai o che do debug
CHAN_NGAT_INT0 EQU
P3.2
; Ma cac phim chuc nang
KEY_F1
KEY_F2
KEY_BS
EQU
EQU
EQU
16
17
18
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ96ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
KEY_ENTER
EQU
19
; RAM danh cho xy ly cua chuong trinh MONITOR
ProgRamAddr
EQU
EQU
7FH
E
ProgRamAddr ; De chon lam viec voi nua man hinh 1 hay 2,
tuong ung E =1, 2
ProgRamAddr - 1 ; Byte dem. cua ban phim, luu gia tri phim
nhan ve, cap nhat bang ngat
ProgRamAddr - 2
KEY
EQU
So_Man_Hinh
LED7Doan1
LED7Doan2
LED7Doan3
LED7Doan4
EQU
EQU
EQU
EQU
EQU
ProgRamAddr - 3
ProgRamAddr - 4
ProgRamAddr - 5
ProgRamAddr - 6
; RAM lam vung dem cho qua trinh nap EEPROM tu PC
StartAddrH
StartAddrL
EQU
EQU
ProgRamAddr - 8; Byte cao cua dia chi can ghi den' cua goi du lieu
ProgRamAddr - 9; Byte thap cua dia chi can ghi den' cua goi du lieu
; ##################################################################
; KET THUC CAC KHAI BAO
; ##################################################################
6.3ꢀCh−¬ngꢀtr×nhꢀquÐtꢀbꢂnꢀphÝmꢀ
Ch−¬ngꢀtr×nhꢀnꢂyꢀ®−îcꢀn¹pꢀchoꢀ1ꢀchipꢀviꢀ®iÒuꢀkhiÓnꢀlo¹iꢀ20ꢀch©nꢀcñaꢀATMELꢀ
lꢂꢀAT89C2051ꢀ
; ##########################################################
; Chuong trinh quet ban phim 4x4
; Su dung P1 de giao tiep voi ban phim
; P1.0 - P1.3 noi voi cac hang lan luot 1 2 3 4
; P1.4 - P1.7 noi voi cac cot lan luot 1 2 3 4
; ##########################################################
ORG 0000H
; Truoc het ta doc cac hang 1-4, cac phim chuc nang, da duoc noi dat san
mov P3, #0FFH
call Delay
mov P3, #00H
call Delay
mov P3, #0FFH
Start:
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ97ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
mov P1, #11111111B
mov A, P1
anl A, #00001111B
; Dat tat ca len 1
; Lay 4 bit thap cua P1, noi voi hang
cjne A, #00001111B, Doc_Cot_Chuc_Nang ; Kiem tra de chac rang tat ca cac
phim chuc nang duoc tha
sjmp Doc_Ban_Phim
Doc_Cot_Chuc_Nang:
mov
mov
P1, #11111111B
A, P1
; Dat tat ca len 1
anl A, #00001111B
; Che cac bit cot di
F1:
cjne A, #00001110B, F2
Wait:
mov
anl
A, P1
A, #00001111B
cjne A, #00001111B, Wait
; Doi tha nut
clr
nop
nop
nop
mov
P3.7
P3,#16
call Delay
; Chong rung
; Tiep tuc quet phim
ljmp Tiep_tuc_quet
F2:
cjne A, #00001101B, BACK_SPACE
Wait1:
mov
mov
anl
P1, #11111111B
A, P1
; Dat tat ca len 1
A, #00001111B
cjne A, #00001111B, Wait1
mov P3,#17
call Delay ; Chong rung
; Doi tha nut
ljmp Tiep_tuc_quet
BACK_SPACE:
cjne A, #00001011B, ENTER
Wait2:
mov
mov
anl
P1, #11111111B
A, P1
; Dat tat ca len 1
A, #00000100B
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ98ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
cjne A, #00000100B, Wait2
mov P3,#18
call Delay ; Chong rung
; Doi tha nut
ljmp Tiep_tuc_quet
ENTER:
cjne A, #00000111B, Start
Wait3:
mov
mov
anl
P1, #11111111B
A, P1
; Dat tat ca len 1
A, #00001000B
cjne A, #00001000B, Wait3 ; Doi tha nut
clr
mov
P3.7
P3,#19
call Delay
; Chong rung
Tiep_Tuc_Quet:
WAIT4: ; Doi phim duoc tha het
mov
mov
anl
P1, #11111111B
A, P1
; Dat tat ca len 1
A, #00001111B
cjne A, #00001111B, Wait4
call Delay
mov
P3, #0FFH; Tat ngat, khoa tin hieu o ngo ra tin hieu o ngo ra
; Tiep tuc quet phim
ljmp Start
;;;;;;;;;;;;;;;;;;;;;;;;
;Khong co phim chuc nang nao duoc an, tim phim thuong`
Doc_Ban_Phim:
mov
mov
anl
P1,#11110000B ; Noi dat tat ca cac hang
A, P1
A, #11110000B
cjne A, #11110000B, Co_Phim_Duoc_An
; Neu co phim duoc an
jmp
Start
; Neu khong, tiep tuc giam sat
Co_Phim_Duoc_An:
MOV
MOV
anl
P1,#11111110B ; Noi dat hang 1
A, P1
A, #11110000B
cjne A, #11110000B, ROW1
MOV
MOV
P1,#11111101B
A,P1
; Noi dat hang 2
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ99ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
ANL
A,#11110000B
cjne A,#11110000B, ROW2
MOV
MOV
ANL
P1,#11111011B
A,P1
; Noi dat hang 3
; Noi dat hang 4
A,#11110000B
cjne A,#11110000B, ROW3
MOV
MOV
ANL
P1,#11110111B
A,P1
A,#11110000B
cjne A,#11110000B, ROW4
ROW1: MOV
DPTR,#KCODE1
call FIND
ljmp Start
ROW2: MOV
DPTR,#KCODE2
call FIND
ljmp Start
ROW3: MOV
DPTR,#KCODE3
call FIND
ljmp Start
ROW4: MOV
DPTR,#KCODE4
call FIND
ljmp Start
; ##############################################
; THU TUC TIM KIEM TRONG BANG
; ##############################################
FIND:
rlc
jnc
A
; Quay lan luot cac cot len co nho' de ktra
MATCH ; Neu = 0, dung la cot dang co phim duoc an
inc DPTR ; Neu = 1, tiep tuc tang con tro DL va quay de tim ra cot chua phim
dc an
sjmp FIND
MATCH:
CLR
A
MOVC A,@A+DPTR ; Luc nay A se chua cac gia tri tu 0-15
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ100ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
MOV
P3,A
; xuat ra ngoai, do A < 16 nen bit D7 bao gio cung = 0,
; ta tan dung de tao ra ngat ngoai cho CPU
WAIT5: ; Doi phim duoc tha het
mov
mov
anl
P1, #11110000B ; Noi dat tat ca cac hang
A, P1
A, #11110000B
cjne A, #11110000B, WAIT5
mov P3, #0FFH ; Tat ngat, khoa tin hieu o ngo ra
call Delay
ret
; ##############################################
; KET THUC THU TUC TIM KIEM
; ##############################################
DELAY:
TT0: MOV R2,#180
MOV R1,#72
TT1: DJNZ R1,TT1
DJNZ R2,TT1
RET
;Giai ma
KCODE1: DB 3, 2, 1, 0
KCODE2: DB 7, 6, 5, 4
KCODE3: DB 11, 10, 9, 8
KCODE4: DB 15, 14, 13, 12
END
ꢀ
6.4ꢀCh−¬ngꢀtr×nhꢀ®iÒuꢀkhiÓnꢀhiÓnꢀthÞꢀLCDꢀ
; ######################################################
; THU TUC XUAT LENH RA LCD
; ######################################################
Command_To_LCD:
push DPH
push DPL
push 02H
mov
mov
mov
R2, A
A,#CW_011
DPTR, #CW1
; Luu A
; Dat A ra, B,C dau vao
movx @DPTR, A
; Xuat tu dieu khien
; Doc thanh ghi lenh
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ101ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
; PA3 PA2 PA1 PA0
; E2 E1 RW RS
mov
A, E
cjne A, #2, Nua_MH1
mov
jmp
A, #00001010B
Xuat_Ra
Nua_MH1:
mov
Xuat_Ra:
A, #00000110B
mov
DPTR, #LCD_CONTROL
movx @DPTR, A
; Xuat th dk ra LCD
mov DPTR, #LCD_DATA
Ready_CMD:
movx A, @DPTR
; Doc DB vao
jb
ACC.7, Ready_CMD
; Dat lai PA, PB lam cong ra
mov
mov
A,#CW_000
PTR, #CW1
; Dat A,B,C dau RA
movx @DPTR, A
mov
mov
A, R2
DPTR, #LCD_DATA
movx @DPTR, A
; Xuat ra
; Chot du lieu bang cach dua xung tu H to L o chan E1
mov
DPTR, #LCD_CONTROL
mov
A, E
cjne A, #2, Nua_MH1_C
mov
jmp
A, #00001000B
Chot
; E2 = 1; E1 = 1, RW = 0; RS = 0
Nua_MH1_C:
mov
Chot:
A, #00000100B
; E2 = 0; E1 = 1, RW = 0; RS = 0
; E2 =1; E1 = 0, RW = 0; RS = 0
movx @DPTR, A
nop
nop
mov
A, #00000000B
movx @DPTR, A
; Chot du lieu
pop 02H
pop
DPL
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ102ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
pop
ret
DPH
; ######################################################
; KET THUC THU TUC XUAT LENH RA LCD
; ######################################################
; ######################################################
; THU TUC IN KI TU RA LCD
;
INPUT = A (ASCII)
; ######################################################
In_Ki_Tu:
push DPH
push DPL
push 02H
mov
mov
mov
R2, A
A,#CW_011
DPTR, #CW1
; Luu A
; Dat A ra, B,C dau vao
movx @DPTR, A
; Xuat tu dieu khien
; Doc thanh ghi lenh
; PA3 PA2 PA1 PA0
; E2 E1 RW RS
mov
A, E
cjne A, #2, Nua_MH1_InKT
mov
jmp
A, #00001010B
Xuat_Ra_InKT
Nua_MH1_InKT:
mov A, #00000110B
Xuat_Ra_InKT:
mov
movx @DPTR, A
mov DPTR, #LCD_DATA
DPTR, #LCD_CONTROL
; Xuat ra LCD
Ready_Chr:
movx A, @DPTR
; Doc DB vao
jb
ACC.7, Ready_Chr
; Dat lai PA, PB lam cong ra
mov
mov
A,#CW_000
DPTR, #CW1
; Dat A,B,C dau RA
movx @DPTR, A
; Xuat tu dieu khien
mov
mov
A, R2 ; Lay lai gia tri luu ban dau, lenh
DPTR, #LCD_DATA
movx @DPTR, A
; Xuat ra
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ103ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
; Chot du lieu bang cach dua xung tu H to L o chan E1
mov
mov
DPTR, #LCD_CONTROL
A, E
cjne A, #2, Nua_MH1_Chot
mov
jmp
A, #00001001B
Chot_InKT
Nua_MH1_Chot:
mov A, #00000101B
Chot_InKT:
movx @DPTR, A ; E2 =0; E1 = 1, RW = 0; RS = 1
nop
nop
mov
A, #00000001B
movx @DPTR, A
pop 02H
; Chot du lieu
pop
pop
ret
DPL
DPH
; ######################################################
; KET THUC CHUONG TRINH IN KI TU RA LCD
; ######################################################
; ######################################################
;
THU TUC IN CHUOI RA LCD
; INPUT = DIA CHI CUA CON TRO DU LIEU DPTR
; ######################################################
Str_To_LCD:
push ACC
Continue_To_Print:
clr A
movc A,@A+DPTR
jz
Done
call In_Ki_Tu
inc
mov
DPTR
A, #06h
; Dich con tro sang phai
call Command_To_LCD
sjmp Continue_To_Print
Done:
pop
ACC
ret
ꢀ
; ######################################################
;
KET THUC THU TUC IN CHUOI RA LCD
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ104ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
; ######################################################
; ######################################################
;
THU TUC XOA LCD
; ######################################################
CLS:
mov
mov
E, #1
A, #01H
call Command_To_LCD
mov
mov
E, #2
A, #01H
call Command_To_LCD
mov
mov
E, #1
A, #0EH
call Command_To_LCD
mov
A, #0CH ; Bat hien thi, tat con tro
call Command_To_LCD
ret
; ######################################################
; KET THUC THU TUC XOA LCD
; ######################################################
; ######################################################
;
THU TUC IN SO HEXA
; ######################################################
phex:
phex8:
; In so hexa 8 bit, input = ACC
push 02
push acc
swap a
anl
add
jnc
add
a, #0FH
a, #246
phex_b
a, #7
phex_b:
add
mov
mov
a, #58
R2, A ;Luu
A, #0EH
call Command_To_LCD
mov A, R2
call In_Ki_Tu
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ105ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
pop
acc
phex1:
push acc
anl
add
jnc
add
a, #0FH
a, #246
phex_c
a, #7
phex_c:
add
a, #58
mov
mov
R2, A ;Luu
A, #0EH
call Command_To_LCD
mov A, R2
call In_Ki_Tu
pop
pop
ret
acc
02
phex16:
; In so hexa 16 bit, input = DPTR
push acc
mov
a, dph
acall phex
mov
a, dpl
acall phex
pop
ret
acc
; ######################################################
; KET THUC THU TUC IN SO HEXA
; ######################################################
6.5ꢀC¸cꢀvÝꢀdôꢀDEMOꢀ
; ###########################################
; CAC VI DU DEMO
; ###########################################
movx @DPTR, A
cpl A
call Delay_100ms
DEMO1:
; LED DON - 8255-4
mov
mov
R6, A
mov
DPTR, #LED_DON
A, KEY
; Neu co nut an tro ve
DEMO1_1: ; Nhap nhay cac LED xen ke
cjne A, #KEY_BSP, TiepDemo1_1 ; Tiep
tuc chay cho het vong lap
mov
mov
R5, #48
jmp
Exit_DEMO1 ; Neu co lenh thoat
R6, #10101010B
thi tro ve luon
Again_DM11:
TiepDemo1_1:
djnz R5, Again_DM11
mov
A, R6
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ106ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
; Neu co lenh thoat thi tro ve luon
TiepDemo1_3:
djnz R5, Again_DM13
Exit_DEMO1:
DEMO1_2:
; Chay LED tu trai sang phai
; Nghi mot chut
mov A, #00H
movx @DPTR, A
call Delay_500ms
mov
KEY, #0FFH
call Restore_SCR
; Tra lai man hinh truoc'
mov
mov
R5, #48
R6, #10000000B
ret
; Tro ve man hinh 4, chon vd DEMO
Again_DM12:
mov
movx @DPTR, A
call Delay_100ms
A, R6
; ------------------------------------------
DEMO2:
; LED 7 DOAN
Led7Doan1, #0
Led7Doan2, #0
Led7Doan3, #0
Led7Doan4, #0
mov
mov
mov
mov
rr
mov
mov
cjne
A
R6, A
A, KEY ; Neu co nut an tro ve
A, #KEY_BSP, TiepDemo1_2
; Tiep tuc chay cho het vong lap
jmp Exit_DEMO1
; Neu co lenh thoat thi tro ve luon
TiepDemo1_2:
DEMO2_1:
; Dem len
mov
A, #DONG2
call Command_To_LCD
djnz R5, Again_DM12
mov
DPTR, #MSG11
DEMO1_3: ; Chay LED tu phai sang trai
call Str_To_LCD
; Nghi mot chut
A, #00H
mov
mov
A, #DONG3
movx @DPTR, A
call Command_To_LCD
call Delay_500ms
mov
DPTR, #MSG12
mov
mov
R5, #48
call Str_To_LCD
R6, #10000000B
Again_DM13:
Dem_Len:
mov
movx @DPTR, A
call Delay_100ms
A, R6
call Display_Four_7Seg_Led
call Delay_100ms
mov A, KEY
cjne A, #KEY_BSP, Sang_Dem_Xuong
rl
mov
mov
A
R6, A
A, KEY
mov
jmp
KEY, #0FFH
Exit_DEMO2
; Neu co nut an tro ve
cjne A, #KEY_BSP, TiepDemo1_3
; Tiep tuc chay cho het vong lap
Sang_Dem_Xuong:
cjne A, #1, TiepTucDemLen
mp
Exit_DEMO1
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ107ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
mov
jmp
KEY, #0FFH
Exit_DEMO2_1
mov
DPTR, #MSG13
call Str_To_LCD
TiepTucDemLen:
mov
inc
mov
A, Led7Doan4
A
mov
A, #DONG3
call Command_To_LCD
Led7Doan4, A
cjne A, #0AH, Dem_Len
mov
DPTR, #MSG14
add
anl
mov
A, #6
call Str_To_LCD
A, #00001111B
Led7Doan4, A
DEMO2_2:
; ---- Dem xuong'
call Display_Four_7Seg_Led
call Delay_100ms
mov
inc
mov
A, Led7Doan3
A
mov
A, KEY
Led7Doan3, A
cjne A, #KEY_BSP, Sang_Dem_Len
cjne A, #0AH, Dem_Len
mov
jmp
KEY, #0FFH
Exit_DEMO2
add
anl
mov
A, #6
A, #00001111B
Led7Doan3, A
Sang_Dem_Len:
cjne A, #0, TiepTucDemXuong
mov
inc
mov
A, Led7Doan2
A
mov
jmp
KEY, #0FFH
DEMO2_1
Led7Doan2, A
cjne A, #0AH, Dem_Len
TiepTucDemXuong:
add
anl
mov
A, #6
mov
dec
mov
A, Led7Doan4
A
A, #00001111B
Led7Doan2, A
Led7Doan4, A
cjne A, #0FFH, DEMO2_2
mov
inc
mov
A, Led7Doan1
A
mov
Led7Doan4, #9
Led7Doan1, A
mov
dec
mov
A, Led7Doan3
A
cjne A, #0AH, Dem_Len
add
anl
mov
jmp
A, #6
Led7Doan3, A
A, #00001111B
Led7Doan1, A
Dem_Len
cjne A, #0FFH, DEMO2_2
mov
Led7Doan3, #9
mov
dec
mov
A, Led7Doan2
A
Exit_DEMO2_1:
; Thoat dem len, chuyen sang dem xuong
Led7Doan2, A
mov
mov
KEY, #0FFH
A, #DONG2
cjne A, #0FFH, DEMO2_2
mov
Led7Doan2, #9
call Command_To_LCD
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ108ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
mov
dec
mov
A, Led7Doan1
A
DEMO3_3:
mov
mov
DPTR, #MATRIX_LED_ANOD
A, #0FFH
Led7Doan1, A
cjne A, #0FFH, DEMO2_2
movx @DPTR, A
mov
Led7Doan1, #9
DEMO2_2
mov
mov
mov
A, #11001100B
jmp
DPTR, #MATRIX_LED_R
R7, #32
Exit_DEMO2:
Again_DM3_3:
; Chay LED
movx @DPTR, A
rl A
ret
; -------------------------------------------
call Delay_100ms
DEMO3:
; LED MA TRAN
djnz R7, Again_DM3_3
DEMO3_1:
mov
mov
DPTR, #MATRIX_LED_ANOD
A, #0FFH
DEMO3_4:
; Thi nghiem voi cac cot
mov
mov
A, #0FFH
movx @DPTR, A
DPTR, #MATRIX_LED_R
movx @DPTR, A
mov
mov
mov
A, #11001100B
DPTR, #MATRIX_LED_R
R7, #32
mov
mov
A, #0FFH
DPTR, #MATRIX_LED_G
Again_DM3_1: ; Nhay LED cua cac cot, xen ke
movx @DPTR, A
movx @DPTR, A
cpl A
mov
mov
DPTR, #MATRIX_LED_ANOD
A, #01H
call Delay_100ms
djnz R7, Again_DM3_1
movx @DPTR, A
DEMO3_2:
mov
Again_DM3_4:
R7, #64
mov
mov
DPTR, #MATRIX_LED_ANOD
A, #0FFH
; Chay LED
movx @DPTR, A
rl A
movx @DPTR, A
call Delay_100ms
mov
mov
mov
A, #11001100B
djnz R7, Again_DM3_4
DPTR, #MATRIX_LED_R
R7, #32
ret
DEMO4:
; BAN PHIM, LCD
Again_DM3_2:
; Chay LED
movx @DPTR, A
rr A
ret
call Delay_100ms
djnz R7, Again_DM3_2
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ109ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
DEMO5:
; 8255-2
; ADC_DB
; DAC_DB
;ADC, DAC
EQU
EQU
8008H
8009H
; Bus du lieu cua ADC0809
; Bus du lieu cua DAC0808
; ADC_CONTROL
; CW2
EQU
800AH ; Cac tin hieu dieu khien ADC0809
EQU 800BH ; Tu dieu khien CW cua 8255-2
; Cac bit cua ADC_CONTROL nhu sau
; 7 6 | 5 | 4 | 3 | 2 | 1 | 0 |
; ----|-----|----|--------|------|------|------|
; X X | EOC | OE | ALE+SC | ADDC | ADDB | ADDA |
ADC:
mov
mov
DPTR, #ADC_CONTROL
mov
mov
DPTR, #CW2
A, #CW_100
A, #00110000B ; Cho phep dau ra OE
= 1
; A vao, B, C ra
movx @DPTR, A
movx @DPTR, A
mov
DPTR, #ADC_DB ; Doc du lieu tra ve
mov
DPTR, #ADC_CONTROL
; Chon
kenh analog 0
movx A, @DPTR
mov
A, #00001000B
mov
Nhiet_Do, A
movx @DPTR, A
nop
nop
nop
mov
mov
E, #2
A, #DONG1
call Command_To_LCD
mov
A, #00100000B
; Chot
dia chi va bat dau chuyen doi
mov
DPTR, #MSG34
movx @DPTR, A
call Str_To_LCD
mov
DPTR, #CW2
; Chuyen PC -
ADC_CONTROL lam dau vao
mov
A, #DONG2
mov
A, #CW_101
; A, C vao, B ra
call Command_To_LCD
movx @DPTR, A
mov
DPTR, #MSG35
Wait_EOC:
; Cho` cho
qua trinh convert ket thuc
call Str_To_LCD
mov
movx A, @DPTR
anl A, #00100000B
DPTR, #ADC_CONTROL
mov
A, #DONG3
call Command_To_LCD
cjne A, #00100000B, Wait_EOC
; Ket thuc qua trinh chuyen doi
mov
DPTR, #MSG33
call Str_To_LCD
mov
DPTR, #CW2
; Dat lai PC lam dau
ra
mov
clr
A, Nhiet_Do
CY
mov
A, #CW_100
; A vao, B, C ra
movx @DPTR, A
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ110ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
subb A, #100
jc Nhiet_Do_Nho_Hon_100
mov
call In_Ki_Tu
mov A, #' '
A, #'C'
Nhiet_Do_Lon_Hon_100:
mov
dec
rl
rl
A, Nhiet_Do
A ; Tru 1
call In_Ki_Tu
call Delay_500ms
call Delay_500ms
A
A
; Nhan 4 de nhay cho dung
mov
A, KEY
vi tri chuoi can tra trong bang
cjne A, #KEY_ENTER, KT_Thoat_ADC
mov
mov
mov
R6, #4
mov
jmp
KEY, #0FFH
DAC
R0, A
DPTR, #LON_HON_100_DO
In_Nhiet_Do_1:
KT_Thoat_ADC:
movc A, @A + DPTR
call In_Ki_Tu
cjne A, #KEY_BSP, Tiep_Tuc_ADC
mov KEY, #0FFH
inc
mov
R0
call Restore_SCR
A, R0
ret
djnz R6, In_Nhiet_Do_1
jmp
In_Do_C
Tiep_Tuc_ADC:
jmp
ADC
Nhiet_Do_Nho_Hon_100:
mov
dec
rl
A, Nhiet_Do
A ; Tru 1
; -------------------------------------------
----
A
; Nhan 2 de nhay cho dung
vi tri chuoi can tra trong bang
DAC:
mov
mov
mov
R6, #2
mov
mov
E, #2
R0, A
A, #01
DPTR, #NHO_HON_100_DO
call Command_To_LCD
In_Nhiet_Do_2:
movc A, @A + DPTR
call In_Ki_Tu
mov
A, #DONG2
call Command_To_LCD
inc
mov
R0
A, R0
mov
DPTR, #MSG38 ; 'Thi nghiem voi
djnz R6, In_Nhiet_Do_2
DAC'
call Str_To_LCD
In_Do_C:
ꢀ
mov
call In_Ki_Tu
mov A, #'d'
call In_Ki_Tu
mov A, #'o'
call In_Ki_Tu
mov A, #' '
call In_Ki_Tu
A, #' '
; DAC_DB
; Bus du lieu cua DAC0808
EQU
8009H
mov A, #DONG3
call Command_To_LCD
mov
DPTR, #MSG36
call Str_To_LCD
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ111ꢀ
Gi¸oꢀtr×nhꢀm«nꢀKüꢀthuËtꢀViꢀ§iÒuꢀKhiÓnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀCh−¬ngꢀ61ꢀ:PhÇnꢀphôꢀlôcꢀ
ꢀ
ꢀ
ꢀ
mov
Ap_Ra, #10
mov
KEY, #0FFH
Tang_Ap_DAC:
mov A, Ap_Ra
Dao_Gia_Tri:
Exit_DEMO5:
call
ret
Restore_SCR
rrc
mov
rrc
mov
rrc
mov
rrc
mov
rrc
mov
rrc
mov
rrc
mov
rrc
mov
A
DEMO6:
; STEPPER, DC MOTOR
07H, C
A
;DIGITAL_INPUT EQU 800CH ; Dau vao so
;DC_STEPPER EQU 800DH ; Dieu khien dong co
buoc (PB0-PB3), dong co 1 chieu(PB4-PB7
06H, C
A
05H, C
A
; PULSE_INPUT EQU 800EH ; 4 dau vao xung =
nut(PC4-PC7), 4 tu cac nguon phat
xung(PC0-PC3)
04H, C
A
; CW3 EQU 800FH ; Tu dieu khien CW cua
8255-3
03H, C
A
02H, C
A
mov
mov
mov
mov
mov
mov
mov
mov
DPTR, #DC_STEPPER
R4, #00110011B
R7, #255
01H, C
A
R6, #5
00H, C
Nut1, #0
Nut2, #0
mov
A, 20H
Nut3, #0
Nut4, #0
mov
DPTR, #DAC_DB
movx @DPTR, A
Quay_Thuan:
mov A, R4
movx @DPTR, A
mov
add
mov
A, Ap_Ra
A, #2
Ap_Ra, A
rl
mov
A
call Delay_500ms
call Delay_500ms
call Delay_500ms
call Delay_500ms
call Delay_500ms
call Delay_500ms
R4, A
call Delay_7ms
call Delay_7ms
call Delay_7ms
mov
cjne A, #KEY_BSP, Case_Enter_QT
mov KEY, #0FFH
A, KEY
mov
cjne A, #254, KT_Thoat_Tang_Ap_DAC
jmp Exit_DEMO5
A, Ap_Ra
call Restore_SCR
ret
; MSG29: db 'ENTER=Test pulse input', 0
; MSG30: db 'ENTER=Test digital
input',0
KT_Thoat_Tang_Ap_DAC:
Case_Enter_QT:
mov
A, KEY
mov
A, KEY
cjne A, #KEY_BSP, Tang_Ap_DAC
ꢀ
ꢀBiªnꢀso¹nꢀ:ꢀL©mꢀt¨ngꢀ§øcꢀ–ꢀLªꢀTiÕnꢀDòngꢀ–Béꢀm«nꢀT§HꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀTrangꢀꢀ112ꢀ
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật vi điều khiển - Chương 6: Phục lục - Lâm Tăng Đức", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_ky_thuat_vi_dieu_khien_chuong_6_phuc_luc_lam_tang.pdf

