Sơ đồ mạch tổng quát

Một phần của tài liệu Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển (Trang 52)

5.2.5. Sơ đồ hệ thống

5.3. Vẽ mạch in và chế tạo mạch in

Hình 29. sơ đồ mạch in

5.4 . Chương trình xử lý bàn phím

Có chức năng nhận biết các phím bấm được ấn, thông báo cho chương trình chính thực hiện các chức năng tương ứng của các phím được ấn. các chức năng chính như tăng, giảm, thiết lập thời gian.

Về giải thuật thực hiên ta sẽ sử dụng một vòng lặp để chờ phím được bấm, chương trình sẽ liên tục kiểm tra trạng thái của các chân tín hiệu được nối với vi điều khiển để biết xem phím nào được bấm hay không. Khi một phím được bấm, bit đại diện cho phím sẽ được set lên bit 1 và chương trình chính sẽ đọc giá trị của bit này để thực hiện chức năng tương ứng. chương trình con quét bàn phím sẽ sử dụng ngắt của bộ định thời 0 của AT89C51.

5.5 . Chương trình quét Led hiển thị

Chức năng đọc dữ liệu trong vùng nhớ đã được định sẵn và hiển thị thông tin chưa trong đó ra các đèn Led 7 thanh tương ứng.

Về giải thuật thực hiện ta sẽ sử dụng phương pháp quét Led hiển thị, mỗi lần chỉ cho sáng một Led tương ứng tương ứng với dữ liệu ở vùng nhớ tương ứng. tần số hiển thị cho mỗi Led sáng khoảng 50 lần/1s, do đó ta thấy trên mặt hiển thi các Led sáng liên tục. Chương trình sử dụng ngắt của bộ định thời 0 của AT89C51.

5.6. Chương trình thời gian thực

Chức năng của chương trình là tạo ra một bộ đếm thời gian cho hoạt động của thiết bị. đây là chương trình con quan trọng quyết định độ chính xác của thiế bị. Giải thuâth thực hiện là sử dụng ngắt của bộ định thời và sử dụng các biến thời gian kết hợp với các vòng lặp để đếm các lần tràn của bộ định thời hay các ngắt. Các ngắt sẽ được thiết lập sau một khoảng thời gian quy định trong các thanh ghi THx và TLx của các bộ định thời, việc xác định các giá trị này sẽ quyết định độ chính xác về thời gian. Các biến thời gian trong chương trình con này sẽ truyền dữ liệu về cho chương trình hiển thị và chương trình chính. Các biến này cũng sẽ được so sánh với thời gian trong IC thời gian thực DS 1307 để đồng bộ về mặt thời gian. Trong trường hợp mất điện thì các giá trị của các biến sẽ được thiết lập lại nhờ các giá trị thời gian từ DS 1307.

5.7 . Chương trình giao tiếp với IC DS1307

Chức năng ghi dữ liệu vào vùng nhớ quy định và đọc ra khi nhận được yêu cầu.

5.8 . Chương trình chính

Chức năng phối hợp hoạt động giữa các cgương trình con, kiểm tra trạng thái của toàn bộ hệ thống để thực hiện điều khiển toàn bộ chức năng của hệ thống. Chương trình chính sẽ theo dõi tín hiệu từ các chương trình con trả về và từ đó đưa ra các quyết định điều khiển tương ứng.

5.9. Sơ đồ thuật toán

B¾T §ÇU

KHëi t¹o time 1 push R0 Push A T¨ng byte counter button menu enable menu byte counter = 20h plag menu = 1 byte counter = 00H POP A POP R0 KÕT THóC F F F T T T

Thuật toán hiển thị:

B¾T §ÇU

push R0 Push A

T¨ng INDEX CURRENT LED

INDEX CURRENT LED = 04H

INDEX CURRENT LED = 00H

INDEX CURRENT LED = INDEX FLICKER LED NORMAL LED (); FLICKER LED (); POP A POP R0 KÕT THóC T T F

Thuật toán đếm thời gian:

B¾T §ÇU

KHëI T¹O TIME 0 push R0 Push A T¡NG R7 R7 = 14H R7 = 00H T¡NG §¥N VÞ GI¢Y §¥N VÞ GI¢Y = 10 T §¥N VÞ GI¢Y = 0 T¡NG CHôC GI¢Y CHôC GI¢Y = 6 T CHôC GI¢Y = 0 T¡NG §¥N VÞ PHóT T §¥N VÞ PHóT = 10 T F F F F

§¥N VÞ PHóT = 0 T¡NG CHôC PHóT CHôC PHóT = 6 CHôC PHóT = 0 T¡NG §¥N VÞ GIê §¥N VÞ GIê = 4 T §¥N VÞ GIê = 10 §¥N VÞ GIê = 0 T¡NG CHôC GIê T KÕT THóC CHôC GIê = 2 T T T F F F F §¥N VÞ GIê = 0 CHôC GIê = 0 POP A POP R0

Chương trình chính:

B¾T §ÇU (adsbygoogle = window.adsbygoogle || []).push({});

KHëi t¹o BIÕN, Cê KHëI T¹O Bé §ÞNH THêI KHæI §éNG DS 1307

GäI HµM §äC THêI GIAN Tõ 1307

KIÓM TRA Cê §ÌN

KIÓM TRA Cê MENU

T

kIÓM TRA Cê EXIT

WRITE DS 1307 KIÓM TRA BËT HOÆC T¾T §ÌN T T F F F INPUT DATA

Ta có chương trình như sau:

; ***** DINH NGHIA CAC THANH GHI CHUC NANG DAC BIET ***** TCON EQU 88h T2CON EQU c8h PCON EQU 87h TMOD EQU 89h TL0 EQU 8Ah TL1 EQU 8Bh TH0 EQU 8Ch TH1 EQU 8Dh RCAP2L EQU CAh RCAP2H EQU CBh TL2 EQU CCh TH2 EQU CDh SP EQU 81h IE EQU A8h IP EQU B8h P0 EQU 80h P1 EQU 90h P2 EQU A0h P3 EQU B0h ACC EQU E0h B EQU F0h

; ***** DINH NGHIA CAC CHAN CHUC NANG DIEU KHIEN ROLE ***** DK_RL EQU P1

DK_RL0 BIT DK_RL.0 ; =0 -> Bat Role, DK_RL1 BIT DK_RL.1 ; =1 -> Bat Role DK_RL2 BIT DK_RL.2 ; =1 -> Bat Role DK_RL3 BIT DK_RL.3 ; =0 -> Bat Role DK_RL4 BIT DK_RL.4 DK_RL5 BIT DK_RL.5 DK_RL6 BIT DK_RL.6 DK_RL7 BIT DK_RL.7 EN_RL_07 BIT P3.2 EN_RL_8F BIT P3.3

; ***** DINH NGHIA CAC CHAN CHUC NANG DIEU KHIEN INTERFACE 24C VA DS1307 *****

SCL_DS BIT P3.6 ; Dieu khien doc ghi Data SDA_DS BIT P3.7 ; Dieu khien xung Clock SCL_24C BIT P3.4 ; Dieu khien xung Clock SDA_24C BIT P3.5 ; Dieu khien doc ghi Data

; ***** DINH NGHIA CAC CHAN CHUC NANG DIEU KHIEN HIEN THI LED *****

GIAI_MA EQU P0 DK_HIENTHI EQU P2

; ***** DINH NGHIA CAC CHAN CHUC NANG PHIM ***** BUTTON_MENU BIT P2.3

BUTTON_EXIT BIT P2.2 BUTTON_INC BIT P2.1 BUTTON_DEC BIT P2.0 ;

; ****** DINH NGHIA CAC HANG VA BIT SU DUNG CHO GIAO TIEP I2C ******

DeviceW_DS EQU 11010000B ; Device ADDRESS 1101 000 + 0 TO WRITE

DeviceR_DS EQU 11010001B ; Device ADDRESS 1101 000 + 1 TO READ

STATUS_FLAG EQU 2DH

ALARM_FLAG BIT STATUS_FLAG.0

I2C_FLAGS EQU 2EH ; Byte nho 2FH duoc dung lam co nho. Moi bit duoc nho voi muc dich khac nhau

; Dat ten Bit danh dau trang thai

LAST_READ_DS BIT I2C_Flags.0 ; Danh dau trang thai byte cuoi cung duoc doc trong mot chu ky doc

ACK_DS BIT I2C_Flags.1 ; Danh dau trang thai tao bit ACK sau moi lan trao doi Byte

BUS_FAULT_DS BIT I2C_Flags.2 ; Danh dau trang thai Bus loi BUS_BUSY_DS BIT I2C_Flags.3 ; Danh dau trang thai Bus busy LAST_READ_24C BIT I2C_Flags.4 ; Danh dau trang thai byte cuoi cung duoc doc trong mot chu ky doc

ACK_24C BIT I2C_Flags.5 ; Danh dau trang thai tao bit ACK sau moi lan trao doi Byte

BUS_FAULT_24C BIT I2C_Flags.6 ; Danh dau trang thai Bus loi BUS_BUSY_24C BIT I2C_Flags.7 ; Danh dau trang thai Bus busy BIT_ACC7 BIT E7h

; ****** DINH NGHIA CAC BIEN VA BIT SU DUNG CHO CHUC NANG NHAN PHIM ****** (adsbygoogle = window.adsbygoogle || []).push({});

BUTTON_FLAG EQU 2Fh

ENABLE_BUTTON_MENU BIT BUTTON_FLAG.0 ; BIT chi thi cho phep "nhan" phim MENU : =1 cho phep ; =0 khong cho phep

ENABLE_BUTTON_EXIT BIT BUTTON_FLAG.1 ; BIT chi thi cho phep "nhan" phim EXIT : =1 cho phep ; =0 khong cho phep

ENABLE_BUTTON_INC BIT BUTTON_FLAG.2 ; BIT chi thi cho phep "nhan" phim INC : =1 cho phep ; =0 khong cho phep

ENABLE_BUTTON_DEC BIT BUTTON_FLAG.3 ; BIT chi thi cho phep "nhan" phim DEC : =1 cho phep ; =0 khong cho phep

FLAG_BUTTON_MENU BIT BUTTON_FLAG.4 ; Co bao phim MENU da an hay ko? : =1 da an ; =0 chua duoc an

FLAG_BUTTON_EXIT BIT BUTTON_FLAG.5 ; Co bao phim EXIT da an hay ko? : =1 da an ; =0 chua duoc an

FLAG_BUTTON_INC BIT BUTTON_FLAG.6 ; Co bao phim INC da an hay ko? : =1 da an ; =0 chua duoc an

FLAG_BUTTON_DEC BIT BUTTON_FLAG.7 ; Co bao phim DEC da an hay ko? : =1 da an ; =0 chua duoc an

BYTE_COUNTER EQU 50h ; Byte dem so lan ngat nhan phim ; dung chung cho tat ca cac phim

; =#20h = 32lan -> Chap nhan phim duoc an, va Reset Byte ve Zero

COUNTER_BIT_DS EQU 57h ; Byte dung de dem tao cac vong lap doc ghi cac bit

COUNTER_BYTE_DS EQU 58h ; Byte dung de dem tao cac vong lap doc ghi cac byte

COUNTER_BIT_24C EQU 59h ; Byte dung de dem tao cac vong lap doc ghi cac bit

COUNTER_BYTE_24C EQU 5Ah ; Byte dung de dem tao cac vong lap doc ghi cac byte

BYTE_INDEX_RW_ROM EQU 5BH ; Byte con tro chi vi tri can doc ghi du lieu len Rom

BYTE_INDEX_RW_RAM EQU 5CH ; Byte con tro chi vi tri vung dem du lieu trao doi voi Rom tren Ram

BYTE_SUM_BYTE_RW EQU 5DH ; Tong so byte trao doi trong moi lan

; ****** DINH NGHIA CAC BIEN CHI THI CHO HIEN THI ******

INDEX_CURRENT_LED EQU 5Fh ; Chi vi tri LED hien thoi duoc hien thi trong 1 chu ky quet

; Gia tri tu 0->E tuong ung LED 1-15; tu LED chuc gio den LED thu ngay

INDEX_FLICKER_LED EQU 60h ; Chi vi tri LED nhay hien thoi trong thao tac nhap du lieu

; Gia tri tu 0->E tuong ung LED 1-15; tu LED chuc gio den LED thu ngay

; ****** DINH NGHIA VUNG NHO DEM CHO HIEN THI ****** BYTE_BUFFER_1 EQU 61h

BYTE_BUFFER_2 EQU 62h BYTE_BUFFER_3 EQU 63h BYTE_BUFFER_4 EQU 64h BYTE_BUFFER_5 EQU 65h

BYTE_BUFFER_6 EQU 66h BYTE_BUFFER_7 EQU 67h BYTE_BUFFER_8 EQU 68h BYTE_BUFFER_9 EQU 69h BYTE_BUFFER_A EQU 6Ah BYTE_BUFFER_B EQU 6Bh BYTE_BUFFER_C EQU 6Ch BYTE_BUFFER_D EQU 6Dh BYTE_BUFFER_E EQU 6Eh BYTE_BUFFER_F EQU 6Fh

; ****** DINH NGHIA VUNG NHO THOI GIAN THUC ***** BYTE_CHUC_GIO EQU 70h BYTE_DONVI_GIO EQU 71h BYTE_CHUC_PHUT EQU 72h BYTE_DONVI_PHUT EQU 73h BYTE_CHUC_GIAY EQU 74h BYTE_DONVI_GIAY EQU 75h BYTE_CHUC_NGAY EQU 76h BYTE_DONVI_NGAY EQU 77h BYTE_CHUC_THANG EQU 78h BYTE_DONVI_THANG EQU 79h BYTE_NGHIN_NAM EQU 7Ah BYTE_TRAM_NAM EQU 7Bh BYTE_CHUC_NAM EQU 7Ch BYTE_DONVI_NAM EQU 7Dh BYTE_THU_NGAY EQU 7Eh INDEX_RAM_DISPLAY EQU 7Fh

; --*---*---MAIN---*---*

ORG 0000H ; dia chi nap rom bat dau cua chuong trinh LJMP BEGIN

ORG 000BH ; dia chi nap rom bat dau cua chuong trinh con dem thoi gian (adsbygoogle = window.adsbygoogle || []).push({});

LJMP COUNTER_TIME

ORG 001BH ; dia chi nap rom bat dau cua chuong trinh con phim bam LJMP GET_KEY

ORG 002BH ; dia chi nap rom bat dau cua chuong trinh con hien thi LJMP DISPLAY

ORG 0030H ; dia chi nap rom bat dau cua chuong trinh chinh BEGIN:

;****** KHOI TAO CAC BIEN GIA TRI VA PORT IN/OUT ****** MOV P0,#00h MOV P1,#00000000B MOV P2,#FFh MOV P3,#FFh CLR ENABLE_BUTTON_MENU CLR ENABLE_BUTTON_EXIT CLR ENABLE_BUTTON_INC CLR ENABLE_BUTTON_DEC CLR FLAG_BUTTON_MENU CLR FLAG_BUTTON_EXIT CLR FLAG_BUTTON_INC CLR FLAG_BUTTON_DEC CLR ALARM_FLAG MOV byte_chuc_gio, #02H MOV byte_donvi_gio, #03H MOV byte_chuc_phut, #05H MOV byte_donvi_phut, #09H MOV byte_chuc_giay, #04H MOV byte_donvi_giay, #05H MOV byte_chuc_ngay, #03H MOV byte_donvi_ngay, #00H MOV byte_chuc_thang, #01H MOV byte_donvi_thang,#01H MOV byte_nghin_nam, #02H MOV byte_tram_nam, #00H MOV byte_chuc_nam, #00H MOV byte_donvi_nam, #07H MOV byte_thu_ngay, #06H

MOV INDEX_CURRENT_LED,#01h ; Thanh ghi chi vi tri den duoc hien thi tai mot thoi diem

MOV INDEX_FLICKER_LED,#FFh

MOV INDEX_RAM_DISPLAY,#BYTE_CHUC_GIO ; Thanh ghi chi vi tri den duoc hien thi tai mot thoi diem

;****** DAT CAU HINH CAC BO DINH THOI ******

MOV TMOD,#00010001b ; Che do dinh thoi 16bit - bo dinh thoi 0 va 1 MOV TH0,#3Ch ; Dat -50000 bo dinh thoi 0

MOV TL0,#AEh ; nhu tren

MOV TH1,#F8h ; Dat -20000 bo dinh thoi 1 MOV TL1,#2Fh ; nhu tren

MOV RCAP2H,#FCh ; Dat -1000 bo dinh thoi 2 cho hien thi MOV RCAP2L,#14h ; nhu tren

MOV T2CON,#00000100b ; che do dinh thoi SETB TCON.4 ; Cho phep bo dinh thoi 0 SETB TCON.6 ; Cho phep bo dinh thoi 1

MOV IE,#AAh ; Cho phep ngat - bo dinh thoi 0 va 1

MOV IP,#02h ; Dat muc uu tien nhat cho ngat dem thoi gian - cua bo dinh toi 0

; ******* PHAI CHU Y KHOI DONG DS1307 NEU THAY CON MOI VAO ******* LCALL OSC_CONTROL_DS LCALL READ_TIME_DS SETB ENABLE_BUTTON_MENU SETB ENABLE_BUTTON_EXIT CLR ENABLE_BUTTON_INC CLR ENABLE_BUTTON_DEC MAIN_LOOP: JNB ALARM_FLAG,NOT_ALARM LCALL CHECK_ALARM CLR ALARM_FLAG NOT_ALARM: JBC FLAG_BUTTON_MENU,INPUT_REAL_TIME SJMP MAIN_LOOP INPUT_REAL_TIME: SETB ENABLE_BUTTON_MENU SETB ENABLE_BUTTON_EXIT SETB ENABLE_BUTTON_INC SETB ENABLE_BUTTON_DEC

; ****** Chuyen du lieu tu vung thoi gian thuc sang vung chinh thoi gian ******

MOV BYTE_BUFFER_1, BYTE_CHUC_GIO ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_2, BYTE_DONVI_GIO ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_3, BYTE_CHUC_PHUT ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_4, BYTE_DONVI_PHUT ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_5, BYTE_CHUC_GIAY ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_6, BYTE_DONVI_GIAY ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_7, BYTE_CHUC_NGAY ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_8, BYTE_DONVI_NGAY ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_9, BYTE_CHUC_THANG ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_A, BYTE_DONVI_THANG ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_B, BYTE_NGHIN_NAM ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_C, BYTE_TRAM_NAM ; Nhap bang du lieu da nhap sang vung thoi gian thuc (adsbygoogle = window.adsbygoogle || []).push({});

MOV BYTE_BUFFER_D, BYTE_CHUC_NAM ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_E, BYTE_DONVI_NAM ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_F, BYTE_THU_NGAY ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV INDEX_RAM_DISPLAY,#BYTE_BUFFER_1 MOV INDEX_FLICKER_LED,#00h

LCALL INPUT_DATA

CLR ENABLE_BUTTON_INC CLR ENABLE_BUTTON_DEC

; ****** Chuyen du lieu tu vung thoi gian thuc sang vung chinh thoi gian ******

MOV BYTE_CHUC_GIO, BYTE_BUFFER_1 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_DONVI_GIO, BYTE_BUFFER_2 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_CHUC_PHUT, BYTE_BUFFER_3 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_DONVI_PHUT, BYTE_BUFFER_4 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_CHUC_GIAY, BYTE_BUFFER_5 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_DONVI_GIAY, BYTE_BUFFER_6 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_CHUC_NGAY, BYTE_BUFFER_7 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_DONVI_NGAY, BYTE_BUFFER_8 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_CHUC_THANG, BYTE_BUFFER_9 ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_DONVI_THANG,BYTE_BUFFER_A ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_NGHIN_NAM, BYTE_BUFFER_B ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_TRAM_NAM, BYTE_BUFFER_C ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_CHUC_NAM, BYTE_BUFFER_D ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_DONVI_NAM, BYTE_BUFFER_E ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_THU_NGAY, BYTE_BUFFER_F ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV INDEX_RAM_DISPLAY,#BYTE_CHUC_GIO ; Tra lai con tro hien thi chi vao vung thoi gian thuc

LCALL WRITE_TIME_DS ; GHI LAI THOI GIAN DA CHINH VAO DS1307

LJMP MAIN_LOOP

RESET_BUFFER:

MOV BYTE_BUFFER_1, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_2, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_3, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc (adsbygoogle = window.adsbygoogle || []).push({});

MOV BYTE_BUFFER_4, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_5, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_6, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_7, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_8, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_9, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_A, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_B, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_C, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_D, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_E, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

MOV BYTE_BUFFER_F, #00h ; Nhap bang du lieu da nhap sang vung thoi gian thuc

RET

;************************************************ ; Chuong trinh con nhap day 7 so

; Dau vao la Byte chi vi tri vung nho can nhap

;************************************************ INPUT_DATA: LOOP_INPUT_DATA: JBC FLAG_BUTTON_MENU, SUB_BUTTON_MENU JBC FLAG_BUTTON_EXIT, SUB_BUTTON_EXIT JBC FLAG_BUTTON_INC, SUB_BUTTON_INC JBC FLAG_BUTTON_DEC, SUB_BUTTON_DEC SJMP LOOP_INPUT_DATA SUB_BUTTON_MENU:

MOV R0,#INDEX_FLICKER_LED ; Thanh ghi chi so den nhay INC @R0 ; Tang chi so den nhay -> Nhay sang den tiep theo CJNE @R0,#04h,LOOP_INPUT_DATA

MOV @R0,#00h

LJMP LOOP_INPUT_DATA SUB_BUTTON_INC:

MOV A,#BYTE_BUFFER_1 ; Chuyen con tro vung nhap du lieu vao

Một phần của tài liệu Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển (Trang 52)