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 Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
Comment