Thông báo

Collapse
No announcement yet.

Giúp em code nút nhấn với!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Giúp em code nút nhấn với!

    Mấy bác giúp em code làm sao để khi nhấn 2 nút cùng lúc thì vđk thực hiện 2 lệnh khác nhau với. Bình thường em code chỉ nhấn hết nút này rồi mới nhấn nút khác được thôi. Em xài asm
    Cảm ơn các bác trước!!!!

  • #2

    là sao ví dụ cụ thể

    Comment


    • #3
      Lệnh trong 89 là lệnh tuần tự nên k thể làm như bạn nói dc . Có thể dùng ngắt để thực hiện nhiều công việc 1 lúc .

      Comment


      • #4
        Nguyên văn bởi fee_08 Xem bài viết
        Lệnh trong 89 là lệnh tuần tự nên k thể làm như bạn nói dc . Có thể dùng ngắt để thực hiện nhiều công việc 1 lúc .
        Em lập trình để điều khiển robot bằng tay game. Hôm bữa về quê em thấy có đội kia nó đang điều khiển robot chạy tới, đang chạy thì nó bấm nút cơ cấu trượt lên. Như vậy tối ưu được thời gian hơn. Dùng ngắt để thực hiện nhiều việc thì làm như thế nào ạ? Bình thường ngắt là bay tới chương trình ngắt rồi có quay lại chương trình chính được không anh? Anh làm 1 cái ví dụ được không ạ?
        Ps: Em cũng không có xem mạch của đội đó, cũng có thể là mạch đó không dùng vđk

        Nguyên văn bởi chung1608 Xem bài viết

        là sao ví dụ cụ thể
        Ví dụ ở trên đó bro

        Comment


        • #5
          Nguyên văn bởi ckd-ir Xem bài viết
          Em lập trình để điều khiển robot bằng tay game. Hôm bữa về quê em thấy có đội kia nó đang điều khiển robot chạy tới, đang chạy thì nó bấm nút cơ cấu trượt lên. Như vậy tối ưu được thời gian hơn. Dùng ngắt để thực hiện nhiều việc thì làm như thế nào ạ? Bình thường ngắt là bay tới chương trình ngắt rồi có quay lại chương trình chính được không anh? Anh làm 1 cái ví dụ được không ạ?
          Ps: Em cũng không có xem mạch của đội đó, cũng có thể là mạch đó không dùng vđk



          Ví dụ ở trên đó bro
          ngắt xong thì quay về CT chính thôi. Còn vấn đề là tùy bạn, khi chạy mà làm công chuyện khác nữa thì có ngừng chạy hay ko hay vẫn còn chạy.

          Comment


          • #6
            Nguyên văn bởi chung1608 Xem bài viết
            ngắt xong thì quay về CT chính thôi. Còn vấn đề là tùy bạn, khi chạy mà làm công chuyện khác nữa thì có ngừng chạy hay ko hay vẫn còn chạy.
            Tất nhiên là vẫn còn chạy chứ, dùng ngắt thì có linh hoạt được không? Ví dụ nhấn nút 1 để chạy tới, nhấn nút 2 trượt lên và vẫn đang chạy tới

            Comment


            • #7
              Nguyên văn bởi ckd-ir Xem bài viết
              Tất nhiên là vẫn còn chạy chứ, dùng ngắt thì có linh hoạt được không? Ví dụ nhấn nút 1 để chạy tới, nhấn nút 2 trượt lên và vẫn đang chạy tới
              đơn giản là ví dụ đang cho chạy bấm ngắt 1 cái thì làm cái trong ngắt trạng thái chạy vẫn giữ nguyên. Nếu trong ngắt có nhu cầu ngưng chạy thì tắt chạy, ko có nhu cầu thì làm xong ngắt rồi quay về chương trình chính làm tiếp.

              Comment


              • #8
                Bác ví dụ dùm 1 cái được không? Trình em gà nên ngắt xong là đứng luôn, không về ct chính được

                Comment


                • #9
                  DÙng ngắt làm cũng được nhưng thời gian chương trình ngắt đủ ngắn thì bạn cứ coi như 2 công việc thực hiện cÙng lúc.Thực tế có 2 cách làm:
                  cách 1:dÙng 1 timer định thì cứ 10ms thì quét phím.Thời gian còn lại thực hiện chương trình chính.
                  cách 2:lặp liên tục vừa quét phím vừa thực hiện chương trình chính.
                  trong chương trình chính chứa điều kiện nếu phím 1 thì cho chạy.Nếu phím 2 thì dừng chạy cho trượt.Nếu 2 phím nhấn thì vừa chạy vừa trượt.Điểm quan trọng phải biết là kô phải 2 phím nhấn cÙng lúc.DÙng ngắt làm cũng được nhưng thời gian chương trình ngắt đủ ngắn thì bạn cứ coi như 2 công việc thực hiện cÙng lúc.Thực tế có 2 cách làm:
                  cách 1:dÙng 1 timer định thì cứ 10ms thì quét phím.Thời gian còn lại thực hiện chương trình chính.
                  cách 2:lặp liên tục vừa quét phím vừa thực hiện chương trình chính.
                  trong chương trình chính chứa điều kiện nếu phím 1 thì cho chạy.Nếu phím 2 thì dừng chạy cho trượt.Nếu 2 phím nhấn thì vừa chạy vừa trượt.Điểm quan trọng phải biết là kô phải 2 phím nhấn cÙng lúc.
                  , , ,

                  Comment


                  • #10
                    Nguyên văn bởi ckd-ir Xem bài viết
                    Bác ví dụ dùm 1 cái được không? Trình em gà nên ngắt xong là đứng luôn, không về ct chính được
                    bạn viết ngắn như đã học thôi, lệnh RETI là tự nó hiểu nhảy về chỗ đã bị ngắt làm thoát ra à.

                    Comment


                    • #11
                      Đáng tiếc em học cơ khí, không được học vđk
                      Bác Chung có lòng thì code 1 đoạn mẫu cho em với!
                      Cảm ơn bác nhiều!
                      Last edited by ckd-ir; 20-09-2011, 00:15.

                      Comment


                      • #12
                        Giúp em với mấy bác ơi!

                        Comment


                        • #13
                          có bác nào giúp em với em muốn dùng 1 nút nhấn khi nhấn vào thì lcd hiển thị "tần số =1hz" nhấn cái nữa hiển thị "tần số =2hz" với giá trị tần số được lập trình trên vdk em lập trình tạo tần số trên vdk rồi nhưng không biết làm sao để nhấn nút thì lcd hiển thị giá trị tần số em dùng asm để lập trình và em cũng chỉ biết ngôn ngữ asm thôi.
                          |

                          Comment


                          • #14
                            Nguyên văn bởi ozonedark2 Xem bài viết
                            có bác nào giúp em với em muốn dùng 1 nút nhấn khi nhấn vào thì lcd hiển thị "tần số =1hz" nhấn cái nữa hiển thị "tần số =2hz" với giá trị tần số được lập trình trên vdk em lập trình tạo tần số trên vdk rồi nhưng không biết làm sao để nhấn nút thì lcd hiển thị giá trị tần số em dùng asm để lập trình và em cũng chỉ biết ngôn ngữ asm thôi.
                            nút nhấn P1.0
                            Code:
                            RS	BIT	P3.0
                            WRL	BIT	P3.1
                            EN	BIT	P3.2
                            ORG	0000H
                            MAIN:	
                            	MOV TMOD,#11H
                            	CALL	DELAY40MS
                            	MOV	A,#38H		;FUNCTION SET
                            	CALL	COM		;8BIT,N=1, 5*7 DOT
                            	
                            	MOV	A,#38H		;FUNCTION SET
                            	CALL	COM		;8BIT,N=1, 5*7 DOT
                            	
                            	MOV	A,#00001100B	;DISPLAY ON   0 0 0 0 1 [D] [C] [B]
                            	CALL	COM		;
                            	
                            	MOV	A,#38H		;CLEAR DISPLAY
                            	CALL	COM	
                            	CALL	DELAY1DOT52MS
                            	
                            	MOV	A,#06H		;ENTRY MODE SET
                            	CALL	COM		;CURSOR MOVES TO RIGHT
                            MAIN_START:
                            	MOV	R0,#00H
                            	CALL	FREQUENCY_STRING
                            	MOV	DPTR,#DATA_LCD
                            LOOPM:	JB	P1.0,$
                            	MOV	A,#8AH
                            	CALL	COM
                            	MOV	A,R0
                            	SWAP	A
                            	ANL	A,#0FH
                            	MOVC	A,@A+DPTR
                            	CALL	DATAS
                            	MOV	A,R0
                            	ANL	A,#0FH
                            	MOVC	A,@A+DPTR
                            	CALL	DATAS
                            	CALL	DELAY500MS
                            	MOV	A,R0
                            	ADD	A,#1
                            	DA	A
                            	MOV	R0,A
                            	SJMP	LOOPM
                            	
                            FREQUENCY_STRING:
                            	MOV	DPTR,#FREQ
                            LOOPFR0:CLR	A
                            	MOVC	A,@A+DPTR
                            	CJNE	A,#00H,LOOPFR1
                            RET
                            LOOPFR1:CALL	DATAS
                            	INC	DPTR
                            	SJMP	LOOPFR0
                            COM:	
                            	CLR	RS
                            	CLR	WRL
                            	SETB	EN
                            	MOV	P2,A
                            	CLR	EN
                            	MOV	P2,#0FFH
                            	CALL	DELAY37US
                            RET	
                            DATAS:
                            	SETB	RS
                            	CLR	WRL
                            	SETB	EN
                            	MOV	P2,A
                            	CLR	EN
                            	MOV	P2,#0FFH
                            	CALL	DELAY37US
                            RET
                            WR_COM:
                            	;CALL	BUSY
                            WR_COM0:
                            	CLR	RS
                            	CLR	WRL
                            	SETB	EN
                            	MOV	P2,A
                            	CLR	EN
                            	MOV	P2,#0FFH
                            	CALL	DELAY37US
                            RET
                            
                            DELAY40MS:
                            	MOV TH1,#HIGH(-40000)
                            	MOV TL1,#LOW(-40000)
                            	SETB TR1
                            	JNB TF1,$
                            	CLR TF1
                            	CLR TR1	
                            RET	
                            DELAY37US:
                            	MOV	R1,#18
                            	DJNZ	R1,$
                            RET
                            DELAY1DOT52MS:
                            	MOV TH1,#HIGH(-1520)
                            	MOV TL1,#LOW(-1520)
                            	SETB TR1
                            	JNB TF1,$
                            	CLR TF1
                            	CLR TR1	
                            RET
                            DELAY500MS:
                            	MOV TMOD,#10H
                            	MOV R1,#10
                            LAP:
                            	MOV TH1,#HIGH(-50000)
                            	MOV TL1,#LOW(-50000)
                            	SETB TR1
                            	JNB TF1,$
                            	CLR TF1
                            	DJNZ R1,LAP
                            	CLR TR1	
                            RET
                            FREQ:
                            DB	'FREQUENCY=  HZ',00H
                            DATA_LCD:
                            DB	'0123456789ABCDEF'
                            END

                            Comment


                            • #15
                              AI biết thì có thể giúp minh vơi được không . minh muốn dùng 1 nút nhấn ấn lần thứ 1led sáng ấnh lần thứ 2 led tắt
                              xinh cảm ơn nhiều

                              Comment

                              Về tác giả

                              Collapse

                              ckd-ir Tìm hiểu thêm về ckd-ir

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

                              Collapse

                              Đang tải...
                              X