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
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    um dài mà phải động não nữa

    Comment


    • #17
      Nguyên văn bởi nguyentot90 Xem bài viết
      ORG 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
      thế này thì cứ đứng đè cái nút hoài ấy nhỉ ^^!

      Comment


      • #18
        Cái này mình chỉ ví dụ..code trên sẽ sáng 1 lần rồi tắt. nhấn tiếp thì sáng lần nữa. Còn nhấn 1 lần sáng luôn thi code khác. cho nó nhãy ở nhãn MODE quài thì sáng chứ j.

        Comment


        • #19
          Nguyên văn bởi chung1608 Xem bài viết
          thế này thì cứ đứng đè cái nút hoài ấy nhỉ ^^!
          Gửi bạn linl này viết bằng JB ko á..chua lè >.< PIR va 89 - YouTube
          [b]

          Comment


          • #20
            xem mà chả hiểu kết hợp vào bài như nào. các bác giúp em với, sắp phải nộp bài rồi

            Comment


            • #21
              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


              • #22
                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


                • #23
                  bạn phải định nghĩa nút nhấn ở chân nào và chống dội cho nút nhấn nữa chứ, mình chỉ viết sơ lược giải thuật là vậy thôi

                  Comment


                  • #24
                    ^ 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 ợ?

                    Comment


                    • #25
                      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 ợ?
                      cho chú này @@. Code này có 1 nhược điểm là sau vài chục lần bấm nút mode thì nó sẽ bị đơ ^^, trong giới hạn học tập thì mình để chủ thớt tự nghiên cứu xử lý việc đơ này, đơn giản chỉ là thêm 1 hoặc vài dòng lệnh vào đâu đó ^^!
                      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


                      • #26
                        Bạn thử gửi code của MODE, START, STOP lên đi. Goy nói ý định của bạn. Lệnh nhãy mình thử viết.

                        Comment


                        • #27
                          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


                          • #28
                            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
                            Attached Files

                            Comment


                            • #29
                              Nguyên văn bởi mrmiu Xem bài viết
                              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
                              bó tay chú này rồi, code đơn giản thế mà vẫn ko hiểu còn thêm lum tum. Đọc hiểu rõ CT con BUTTON đi rồi hãy sửa
                              Last edited by chung1608; 23-04-2012, 22:08.

                              Comment


                              • #30
                                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

                                Về tác giả

                                Collapse

                                mrmiu Tìm hiểu thêm về mrmiu

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X