um dài mà phải động não nữa
Thông báo
Collapse
No announcement yet.
Giúp code gọi chương trình con bằng nút ấn MODE
Collapse
X
-
Nguyên văn bởi nguyentot90 Xem bài viếtORG 00H
MOV P1,#00H ;cho p1 bằng 0 hết để khi nó lên mức 1 thì sẽ nhãy bởi lệnh JB
MAIN:
JB p1.1,MODE ;khi p1.1 bị tác động mức 1 từ bên ngoài ví dụ như nút ấn thì lệnh JB sẽ nhãy tới nhãn MODE
JB p1.2,START ; tương tự p1.1
JB p1.3,STOP ; tương tự p1.1
JMP MAIN ;nhãy về MAIN để dò lại từ đầu
MODE: ; nhãn MODE
MOV P2,#00H ; nội dung trong MODE ví dụ tác động mức 0 led ở p2 sẽ sáng
SJMP MAIN ; nhãy về MAIN để dò lại từ đầu
START: ; tương tự nhãn MODE
SJMP MAIN
STOP:
MOV P2,#0FFH
MOV P3,#0FFH
SJMP MAIN
RET
END
Comment
-
Nguyên văn bởi chung1608 Xem bài viếtthế này thì cứ đứng đè cái nút hoài ấy nhỉ ^^!
[b]
Comment
-
mình viết thế này bạn xem sao nhé:
mode equ 30h
sohieuung equ 31h
kiemtra bit 20h.0
org 000h
clr kiemtra
mov mode,#00h // thiết lập mode mặc định là mode 1: mode1(00),mode2(01),mode3(02)
mov sohieuung,#03h // thiết lập số lượng hiệu ứng của chuơng trình ở đây ví dụ đặt là 3
main:
jb start,ktstop
setb kiemtra // kiemtra=1 : cho phép chạy hiệu ứng
ktstop:
jb stop,ktmode
clrb kiemtra // kiemtra=0 : không cho phép chạy hiệu ứng
ktmode:
jb nutmode,ktmode1 // nếu nút mode có nhấn thì tăng biến mode để chuyển sang hiệu ứng khác
mov a,mode
cjne a,sohieuung,x1 // nếu biến mode lớn hơn số hiệu ứng thì chuyển về mode 1
mov mode,#00h
jmp ktmode1
x1:
inc mode // ngược lại tăng biến mode
ktmode1:
jnb kiemtra,main // kiểm tra xem có chuơng trình có được phép chạy không
mov a,mode
cjne a,#01h,ktmode2 // kiểm tra đang ở mode nào
chuơng trình hiệu ứng 1
ktmode2:
cjne a,#02h,ktmode3
chuơng trình hiệu ứng 2
ktmode3:
cjne a,#03h,ktmode4
chuơng trình hiệu ứng 3
.
.
.
Comment
-
mạch thế này phần nút ấn đúng chưa các bác, sao lúc chạy chỉ ấn đc STOP, còn MODE & START ko ấn đc
chả biết kết hợp code vào kiểu gì ???
ORG 00H
Mode epu 30h
sohieuung epu 31h
kiemtra bit 20h.0
org 000h
clr kiemtra
mov mode,#00h
mov sohieuung,#03h
main:
jb start,ktstop
setb kiemtra // kiemtra=1
ktstop:
jb stop,ktmode
clrb kiemtra // kiemtra=0
ktmode:
jb nutmode,ktmode1
mov a,mode
cjne a,sohieuung,x1
mov mode,#00h
jmp ktmode1
x1:
inc mode
ktmode1:
jnb kiemtra,main
mov a,mode
cjne a,#01h,ktmode2
;Chuong trinh con so 1
MOV P2,#00001111B
CALL DELAY
MOV P2,#11110000B
CALL DELAY
ktmode2:
cjne a,#02h,ktmode3
;Chuong trinh con so 2
MOV P2,#00000000B
CALL DELAY
MOV P2,#00000001B
CALL DELAY
MOV P2,#00000011B
CALL DELAY
MOV P2,#00000111B
CALL DELAY
MOV P2,#00001111B
CALL DELAY
MOV P2,#00011111B
CALL DELAY
MOV P2,#00111111B
CALL DELAY
MOV P2,#01111111B
CALL DELAY
MOV P2,#11111111B
CALL DELAY
ktmode3:
cjne a,#03h,ktmode4
;Chuong trinh con so 3
MOV P2,#00000000B
CALL DELAY
MOV P2,#10000000B
CALL DELAY
MOV P2,#11000000B
CALL DELAY
MOV P2,#11100000B
CALL DELAY
MOV P2,#11110000B
CALL DELAY
MOV P2,#11111000B
CALL DELAY
MOV P2,#11111100B
CALL DELAY
MOV P2,#11111110B
CALL DELAY
MOV P2,#11111111B
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#255
LAP:MOV R1,#255
DJNZ R1,$
DJNZ R0,LAP
RET
END
Comment
-
Nguyên văn bởi mrmiu Xem bài viết^ khó quá à, bác sửa giúp em với
mà trong mạch mô phỏng trên ko ấn đc MODE, START là sao ợ?
Code:B_MODE EQU R7 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 DELAY: MOV R0,#255 LOOP1: MOV R1,#255 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;chống rung phím INC B_MODE CJNE B_MODE,#2,NBC0 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 JMP MODE1 NBC2: ;mở rộng thêm nhiều mode NB0: JB STOP,NB1 JB START,$ NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
Last edited by chung1608; 23-04-2012, 10:02.
Comment
-
Bạn thử làm theo cách này xem
bạn tạo 2 biến phụ là : START và STOP
khi bạn nhấn nút thì cho nó bằng =1 khi không nhấn nút sét nó về băng =0
ở các chương trình con bạn phải có lệnh kiểm tra các biến đó có bằng 1 hay không nếu đúng thì cho nó làm không thì cho no kết thúc
trước hết bạn kiểm tra nút STOP : Nếu tác động nút nhấn thì cho biến START =0và STOP=1
Nút START làm ngược lại:START=1 và STOP=0
còn nút MODE thì bạn kiểm tra khi đã nhấn START nghĩa là khi biến START =1
Còn phần xử lý rung phím có rất nhiều cách bạn có thể sử dụng cách DELAY 1s để xử lý
có cách của mình hơi phức tạp 1 chút nhưng đảm bảo.hjhj. Nếu bạn cần thì mình gửi cái thuật toán lên cho
Em cũng mới học Vi xư lý kiến thức nông cạn có j sai sót mấy bác góp ý thêm
Comment
-
các bác xem hộ em xem sai chỗ nào vậy?
MODE p1.0 thì ấn đc, STOP & START p1.1 1.2 sao lại ko ấn đc nhỉ. Nút MODE thì thỉnh chạy đến MODE cuối là đơ, ấn vài lần mới quay về MODE đầu
Code:B_MODE EQU R7 B_STOP EQU R6 B_START EQU R5 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H DOI: JNB B_START,MAIN JNB B_STOP,DOI MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 MODE2: MOV P2,#00000000B CALL DELAY MOV P2,#10000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11100000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111110B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE2 MODE3: MOV P2,#00000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE3 DELAY: MOV R0,#255 LOOP1: MOV R1,#255 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;CHONG RUNG PHIM INC B_MODE CJNE B_MODE,#2,NBC0 CJNE B_MODE,#3,NBC1 CJNE B_MODE,#3,NBC2 CJNE B_MODE,#4,NBC3 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 ;MO RONG THEM NHIEU CODE JMP MODE1 NBC2: CJNE B_MODE,#0,NBC3 JMP MODE2 NBC3: CJNE B_MODE,#0,NBC4 JMP MODE3 NB0: JB STOP,NB1 JB START,$ NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
Comment
-
Nguyên văn bởi mrmiu Xem bài viếtcác bác xem hộ em xem sai chỗ nào vậy?
MODE p1.0 thì ấn đc, STOP & START p1.1 1.2 sao lại ko ấn đc nhỉ. Nút MODE thì thỉnh chạy đến MODE cuối là đơ, ấn vài lần mới quay về MODE đầu
Code:B_MODE EQU R7 B_STOP EQU R6 B_START EQU R5 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H DOI: JNB B_START,MAIN JNB B_STOP,DOI MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 MODE2: MOV P2,#00000000B CALL DELAY MOV P2,#10000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11100000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111110B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE2 MODE3: MOV P2,#00000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE3 DELAY: MOV R0,#255 LOOP1: MOV R1,#255 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;CHONG RUNG PHIM INC B_MODE CJNE B_MODE,#2,NBC0 CJNE B_MODE,#3,NBC1 CJNE B_MODE,#3,NBC2 CJNE B_MODE,#4,NBC3 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 ;MO RONG THEM NHIEU CODE JMP MODE1 NBC2: CJNE B_MODE,#0,NBC3 JMP MODE2 NBC3: CJNE B_MODE,#0,NBC4 JMP MODE3 NB0: JB STOP,NB1 JB START,$ NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
Last edited by chung1608; 23-04-2012, 22:08.
Comment
-
Các bác giúp em vài dòng lệnh cho nút STOP & START với, em làm mãi ko đc.
Code:B_MODE EQU R7 B_STOP EQU R6 B_START EQU R5 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 MODE2: MOV P2,#00000000B CALL DELAY MOV P2,#10000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11100000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111110B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE2 MODE3: MOV P2,#00000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE3 DELAY: MOV R0,#180 LOOP1: MOV R1,#180 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;CHONG RUNG PHIM INC B_MODE CJNE B_MODE,#2,NBC0 CJNE B_MODE,#3,NBC1 CJNE B_MODE,#4,NBC2 CJNE B_MODE,#5,NBC3 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 JMP MODE1 NBC2: CJNE B_MODE,#2,NBC3 JMP MODE2 NBC3: CJNE B_MODE,#3,NBC4 JMP MODE3 NBC4: DEC B_MODE DEC B_MODE DEC B_MODE JMP MODE0 NB0: JNB START,$ JNB STOP,NB1 NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho tìm mua đồng hồ vạn năngbởi minh_tri_bk
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 09:30 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHỏi chỗ anh này là biết cách xử lý ngay thôi. https://www.google.com/search?sca_es...SBJ6H9fqicsb5s...
-
Channel: Điện tử công suất
hôm nay, 01:07 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanBác tìm coi mấy cái clip về tai nạn hàng không sẻ sáng tỏ nhiều điều ......
-
Channel: Điện tử công suất
Hôm qua, 11:02 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanChính xác mua tại hãng và mua qua đại lý khác nhau rất nhiều về giá và chất lượng ....
-
Channel: Điện tử công suất
Hôm qua, 10:51 -
-
Trả lời cho Xin giúp đỡ mạch chuông trò chơi ạ !!bởi DessrtTôi đồng ý, điều này thực sự thú vị....
-
Channel: Hỗ trợ học tập
31-01-2025, 22:08 -
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
30-01-2025, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
30-01-2025, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
Comment