CHƯƠNG TRÌNH PHẦN MỀM

Một phần của tài liệu Giám sát và điều khiển thiết bị qua mạng điện thoại (Trang 71 - 88)

;KHAI BAO BIEN

CTRL_A EQU 00001011B ; GHI VAO THANH GHI DIEU KHIEN A ; CUA MT8880

CTRL_B EQU 00000000B ; GHI VAO THANH GHI DIEU KHIEN ; B CUA MT8880

MODE_WRITE EQU 0A0H ; DIEU KIEN GHI BYTE EEPROM MODE_READ EQU 0A1H ; DIEU KIEN DOC BYTE EEPROM D0 BIT P1.0

D1 BIT P1.1 ; CAC BIT DU LIEU SU DUNG DE MA HOA D2 BIT P1.2

D3 BIT P1.3

CS BIT P1.7 ; CHO PHEP MT8880 HOAT DONG RW BIT P1.5 ; DOC HAY GHI VAO MT8880 RSO BIT P1.6 ; CHON THANH GHI

F2 BIT P1.4 ; CHAN DIEU KHIEN CHU KI GHI VAO MT DK1 BIT P2.0 ; CHAN DIEU KHIEN THIET BI 1

DK2 BIT P2.1 ; CHAN DIEU KHIEN THIET BI 2 GS1 BIT P2.2 ; CHAN GIAM SAT THIET BI 1 GS2 BIT P2.3 ; CHAN GIAM SAT THIET BI 2 A4 BIT P2.4

A5 BIT P2.5 ; CAC CHAN DIA CHI HOP THOAI A6 BIT P2.6

PLAY BIT P2.7 ; CHAN DIEU KHIEN PHAT THOAI SCL BIT P3.0 ; CHAN SCL CUA EEPROM

SDA BIT P3.1 ; CHAN SDA CUA EEPROM

CBCHUONG BIT P3.2 ; CHAN CAM BIEN TIN HIEU CHUONG DEN TAI_GIA BIT P3.5 ; CHAN DIEU KHIEN NHAC MAY

DAO_CUC BIT P3.6 ; CHAN DIEU KHIEN THONG THOAI SW3 BIT P3.3 ; CHAN TAC DONG NGAT 1

IRQ BIT P3.4 FLAGS DATA 20H

FLAG BIT FLAGS.0 ; CO FLAG FLAG1 BIT FLAGS.1 ; CO FLAG1

DK_HETHONG BIT FLAGS.2 ;CO DIEU KHIENTRUY NHAP HE THONG DOI_MMA BIT FLAGS.3 ; CO DIEU KHIEN DOI MAT MA

DSEG AT 21H

WAIT: DS 1 ; BIEN HAM DELAY ADDRESS: DS 1 ; BIEN SO DIA CHI DATAS: DS 1 ; BIEN SO DU LIEU BUFFER: DS 15 ; VUNG DEM CSEG

ORG 00H

LJMP MAIN ; CHUONG TRINH CHINH ORG 13H

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu LJMP EX1_ISP ; CHUONG TRINH NGAT 1

ORG 30H

USING 0 ; SU DUNG BANK 0

MAIN:

MOV SP,#45H ; KHOI DONG NGAN XEP

MOV P1,#0FFH

MOV P3,#11001100B ; DAT CAC TRANG THAI DAU SETB CBCHUONG

CLR TAI_GIA ; GAC MAY SETB P3.6

CLR DK1 ; XOA CAC CHAN DIEU KHIEN THIET BI CLR DK2

MOV BUFFER,#0 ; XOA VUNG DEM LCALL MODE_NHAN ; KHOI DONG MT8880 (adsbygoogle = window.adsbygoogle || []).push({});

JNB CBCHUONG,TT_CHO ;NEU CO CHUONG DEN THI NHAC MAY LJMP EXIT TT_CHO: MOV R7,#20 MOV A,R7 LOOPCHO: MOV WAIT,#10 LCALL DELAY3 DEC A JZ TIEP LJMP LOOPCHO TIEP: SETB P3.5 CPL P3.6 MOV WAIT,#10 LCALL DELAY3 ; 1s CLR DOI_MMA CLR DK_HETHONG

CLR A4 ; PHAT THONG BAO "XIN VUI LONG NHAP ; MA LENH"(000) CLR A5 CLR A6 LCALL DELAY ; 2ms CLR PLAY ; PHAT MOV WAIT,#20 LCALL DELAY3 ; 2s

SETB PLAY ; NGUNG PHAT MOV WAIT,#10

LCALL DELAY3 ; 1s

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu MOV WAIT,#10

LCALL DELAY3 ; 1s

DEC A JZ EXIT

LCALL DOC_TT ; DOC THANH GHI TRANG THAI CUA MT

JB P1.2,RESET_TIME

LJMP LOOPCHO1 RESET_TIME:

LCALL NHAN_SO ; NHAN VA XU LI SO NHAN DUOC TU MT LJMP NHAN_1SO ; TIEP TUC NHAN SO

EXIT:

CLR TAI_GIA ; GAC MAY

LJMP MAIN

;---

; CHUONG TRINH KHOI DONG MT8880: DUA DU LIEU DIEU KHIEN

; VAO THANH GHI CRA VA CRB O MODE NHAN DTMF

;--- MODE_NHAN:

PUSH ACC

MOV A,#00001000B ; GHI DU LIEU VAO CRA ANL A,#0FH ; XOA 4 BIT CAO

ORL A,#10100000B ; CS=1, RSO=0

MOV P1,A ; DUA DU LIEU RA BUS

CLR CS ; CHON CHIP

SETB F2 ; BAT DAU GHI

MOV WAIT,#250

LCALL DELAY1 ; 500us

CLR F2 ; KET THUC QUA TRINH GHI

SETB CS ; THOI CHON CHIP

MOV A,#CTRL_B ; GHI DU LIEU DIEU KHIEN VAO CRB ANL A,#0FH ; XOA 4 BIT CAO

ORL A,#10100000B ; CS=1, RSO=0 (adsbygoogle = window.adsbygoogle || []).push({});

MOV P1,A ; DUA DU LIEU RA BUS

CLR CS ; CHON CHIP

SETB F2 ; BAT DAU GHI

MOV WAIT,#250

LCALL DELAY1 ; 500us

CLR F2 ; KET THUC QUA TRINH GHI

SETB CS ; THOI CHON CHIP

POP ACC RET

;---

; CHUONG TRINH LOAD MAT MA TU EEPROM VE BUFFER

;--- LOAD_MATMA:

PUSH AR0 PUSH ACC LOOP_LOAD:

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu MOV ADDRESS, #00H ; DIA CHI BAT DAU CUA VUNG MAT

;MA TREN EEPROM

LCALL DOC_1BYTE ; DOC BYTE CHUA SO CHU SO MAT MA

JB FLAG1, LOOP_LOAD ; DOC LAI NEU KHONG THANH CONG

ANL DATAS, #0FH ; XOA 4 BIT CAO

MOV R7, DATAS ; R7 CHUA SO CHU SO MAT MA

MOV BUFFER, DATAS ; DUA SO CHU SO MAT MA VE ;VUNG BUFFER

MOV R0, #BUFFER ; LAY DIA CHI CUA VUNG BUFFER MOV WAIT, #3

LCALL DELAY3 ; 300ms

NEXT_LOAD:

INC R0 ; R0 CHUA DIA CHI CAN DE MAT MA VAO

INC ADDRESS ; DIA CHI DOC EEPROM

LOOP_LOAD1:

LCALL DOC_1BYTE ; DOC DU LIEU TREN EEPROM

JB FLAG1, LOOP_LOAD1 ; DOC LAI NEU KHONG THANH CONG

MOV @R0, DATAS ; DUA DU LIEU VAO VUNG BUFFER MOV WAIT, #1

LCALL DELAY3 ; 100ms

DJNZ R7, NEXT_LOAD (adsbygoogle = window.adsbygoogle || []).push({});

CLR FLAG1 ; XOA CO NEU THANH CONG

POP ACC POP AR0 RET

;---

; CHUONG TRINH DOC 1 BYTE TU EEPROM: DIA CHI BYTE NAM TRONG ; EEPROM DU LIEU RA O DATAS

;--- DOC_1BYTE:

PUSH ACC

CLR TR1 ; TAT TIMER

CLR TR0

LCALL MALENH_DOC ; LENH DOC MA LENH DOC JB FLAG1, END_DOC1 ; XET CO FLAG1

LCALL DOC_BYTE ; DOC EEPROM

MOV DATAS, A ; CAT MA VAO A

MOV WAIT, #3

LCALL DELAY1 ; 6µs

SETB SDA ; KHONG CO XUNG ACK

MOV WAIT, #6

LCALL DELAY1 ; 12µs

NOP

SETB SCL ; DAT SCL LEN CAO

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu

CLR SDA ; CHUAN BI TAT EEPROM

MOV WAIT, #4

LCALL DELAY1 ; 8µs

NOP

CLR SDA ; GIU SDA

SETB SCL ; SCL CAO, XUNG THU 10

CLR SDA

MOV WAIT, #15 LCALL DELAY1

SETB SDA ; TAT EEPROM

MOV WAIT, #16

LCALL DELAY1 ; 32µs (adsbygoogle = window.adsbygoogle || []).push({});

CLR FLAG1 ; XUNG ACK

LJMP EXIT_DOC1 END_DOC1:

SETB FLAG1 ; DAT FLAG1 NEU LOI

EXIT_DOC1: POP ACC RET

;---

; CHUONG TRINH GHI CAC MA LENH, DIA CHI CHO LENH DOC ;ADDRESS CHUA DIA CHI CAN DOC, FLAG1=0 GHI THANH CONG

;--- MALENH_DOC:

PUSH ACC CLR TR0 CLR TR1

SETB SDA ; KHOI DONG EEPROM

LJMP CONT ; NHAY TOI CONT

HELP_CODE:

LJMP END_CODE CONT:

SETB SDA ; GIU SDA

SETB SCL ; DAT SCL LEN CAO

SETB SDA ; GIU SDA

MOV WAIT, #10

LCALL DELAY1 ; 20µs

CLR SDA ; BAT DAU EEPROM

MOV WAIT, #3

LCALL DELAY1 ; 6µs

MOV A, #MODE_WRITE ; DIA CHI GHI MODE WRITE (0A0H) LCALL GHI_BYTE ;CHUONG TRINH GHI VAO EEPROM MOV WAIT, #15

LCALL DELAY1 ; 30µs

NOP

SETB SCL ; SCL CAO, XUNG THU 9

MOV WAIT, #5

LCALL DELAY1 ; 10µs

JB SDA, HELP_CODE ; KIEM TRA XUNG ACK MOV WAIT, #3

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu

LCALL DELAY1 ; 6µs

MOV A, #ADDRESS ; DUA DIA CHI VAO A (adsbygoogle = window.adsbygoogle || []).push({});

LCALL GHI_BYTE ;CHUONG TRINH GHI VAO EEPROM MOV WAIT, #15

LCALL DELAY1 ; 30µs

NOP

SETB SCL ; SCL CAO, XUNG THU 9

MOV WAIT, #5 LCALL DELAY1 ; 10µs JB SDA, HELP_CODE MOV WAIT, #5 LCALL DELAY1 NOP

CLR SCL ; SCL THAP, XUNG THU 10

MOV WAIT, #6 LCALL DELAY1

SETB SDA ; CHUAN BI START

MOV WAIT, #4 LCALL DELAY1 NOP

SETB SDA ; GIU TIEP TUC

SETB SCL ; DIEU KIEN START THU 2

SETB SDA ; GIU SCL CAO

MOV WAIT, #5 LCALL DELAY1

CLR SDA ; SDA THAP, START EEPROM

MOV WAIT, #3 LCALL DELAY1

MOV A, #0A1H ; DIA CHI MODE READ

LCALL GHI_BYTE MOV WAIT, #15 LCALL DELAY1 NOP

SETB SCL ; SCL CAO, XUNG THU 9

MOV WAIT, #5 LCALL DELAY1 JB SDA, END_CODE MOV WAIT, #3 LCALL DELAY1

CLR FLAG1 ; XOA CO NEU THANH CONG

LJMP EXIT_CODE END_CODE:

SETB FLAG1 ; DAT CO NEU LOI

EXIT_CODE: POP ACC

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu ;---

; GHI BYTE VAO EEPROM: DATAS CHUA NOI DUNG CAN TRUYEN ; ADDRESS CHUA NOI DUNG CAN GHI FLAG1=0 THANH CONG

;--- GHI_BYTE:

MOV R6, #8 ; 8 BIT

LOOP_G:

RLC A ; DUA BIT CAO DI TRUOC

CLR SCL ; SCL THAP (adsbygoogle = window.adsbygoogle || []).push({});

MOV WAIT, #5

LCALL DELAY1 ; 10µs

MOV SDA, C ; DUA BIT CAO VAO SDA

MOV WAIT, #5 ; DO RONG XUNG

LCALL DELAY1 ; GIU THOI GIAN DE LUU

NOP SETB SCL MOV WAIT, #15 LCALL DELAY1

DJNZ R6, LOOP_G ;TIEP TUC DEN KHI R6=0 THI THOAT NOP

CLR SCL RET

;---

; CHUONG TRINH DOC BYTE VAO EEPROM: ADDRESS CHUA DIA CHI ;CAN DOC DATAS CHUA NOI DUNG BYTE DOC DUOC

;--- DOC_BYTE: MOV R6,#8 ; 8 BIT LOOP_D: NOP CLR SCL ; SCL THAP MOV WAIT, #16 LCALL DELAY1 ; 32µs NOP SETB SCL MOV WAIT, #5 LCALL DELAY1

MOV C, SDA ; DUA DU LIEU VAO C

RLC A ; DUA DU LIEU VAO A

MOV WAIT, #4 LCALL DELAY1 DJNZ R6, LOOP_D NOP CLR SCL RET

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu ;---

; CHUONG TRINH DOC TRANG THAI MT8880: DU LIEU DUA VAO P1

;--- DOC_TT:

PUSH ACC

MOV A,#0FH ; MAT NA CHO 4 BIT CAO

CLR F2 ; CHUA CHO PHEP DOC

SETB RSO ; CHO PHEP DOC DU LIEU THANH GHI

;TRANG THAI

SETB RW ; CHO PHEP DOC DU LIEU RA

CLR CS ; CHON CHIP

SETB F2 ; BAT BAU DOC

MOV WAIT,#250

LCALL DELAY1 ; 500us

ANL A, P1 ; DOC DU LIEU TU BUS

CLR F2 ; THOI DOC

SETB CS ; THOI CHON CHIP (adsbygoogle = window.adsbygoogle || []).push({});

ANL A,#0FH ; XOA 4 BIT CAO

MOV P1, A ; DUA DU LEU VAO STA

POP ACC RET

;---

; CHUONG TRINH NHAN VA XU LI SO

;--- NHAN_SO:

PUSH ACC

LCALL DOC_SO ; DOC SO TU MT8880

MOV A, DATAS ; DUA SO NHAN DUOC VAO THANH GHI A CJNE A, #10, XULY_SO

MOV DATAS, #0 ; NEU DU LIEU LA 10 THI CHUYEN VE 0 MOV A, #0

XULY_SO:

JNB DK_HETHONG, XET_MMA ; XET DIEU KIEN DE TRUY NHAP HE THONG

LCALL TN_HETHONG ; CHUONG TRINH TRUY NHAP DE

;DIEU KHIEN HE THONG LJMP EXIT_XLSO

XET_MMA:

MOV A, @R0 ; MAT MA CAT O DIA CHI R0

CJNE A, DATAS, MMA_SAI ; SO SANH SO NHAN DUOC VOI MAT MA

INC R1 ; NEU DUNG THI SO SANH TIEP

MOV A, R1 ; R1 CHUA SO CHU SO MAT MA

CJNE A, BUFFER, SS_TIEP ; NEU DU THI KET THUC

Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu LJMP EXIT_XLSO

MMA_SAI:

MOV R0, #BUFFER+1 ; NEU BAM SAI THI RESET DIA CHI ;VA BAM LAI TU DAU

MOV R1, #00H MOV A, #0

SETB A4 ; PHAT THONG BAO "MAT MA SAI"(001) CLR A5

CLR A6

LCALL DELAY ; 2ms

CLR PLAY ; BAT DAU PHAT

MOV WAIT, #30 ; 3S

LCALL DELAY3 (adsbygoogle = window.adsbygoogle || []).push({});

SETB PLAY ; NGUNG PHAT

POP ACC EXIT_XLSO:

RET

;---

; CHUONG TRINH CON DOC SO

;---

Một phần của tài liệu Giám sát và điều khiển thiết bị qua mạng điện thoại (Trang 71 - 88)