Thông báo

Collapse
No announcement yet.

Xin các bác giúp e tìm lỗi led 7seg này với !

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

  • Xin các bác giúp e tìm lỗi led 7seg này với !

    em có 2 nút bấm SW1 và SW2 điều khiển 2led 7thanh chung anode. Ấn SW1 hoặc SW2 tăng hoặc giảm đi 1 đơn vị.đếm từ 00-99, tăng lên 99 thì về 00 hoặc giảm về 00 thì lên 99 và lại lặp lại quá trình. Nhưng e ko hiểu sao khi chạy mô phỏng xuất hiện mấy lỗi sau:
    - đặt vị trí ban đầu là 00 mà cứ hiện 80
    - khi ấn tăng hoặc giảm 1 lần mà nó nhảy nhanh tới mấy số (VD đang ở 80 e ấn SW1 tăng nó nhảy nhanh tới tận 84)
    hjc.các bác giúp e với.
    mã lệnh và sơ đồ mô phỏng đây ạ

    MOV R0,#0
    SJMP HIENTHI
    MAIN:
    JNB P3.0,SW1
    JNB P3.1,SW2
    SJMP MAIN
    SW1:
    INC R0
    MOV A,R0
    CJNE A,#100,HIENTHI
    MOV R0,#0
    SJMP HIENTHI
    ;////////////////////
    SW2:
    DEC R0
    MOV A,R0
    CJNE A,#255,HIENTHI
    MOV R0,#99
    SJMP HIENTHI
    ;///////////////
    HIENTHI:
    ;///////////////HIEN THI HANG CHUC//////////////
    MOV A,R0
    MOV B,#10
    DIV AB
    MOV DPTR,#MALED
    MOC A,@A+DPTR
    MOV P2,A
    CLR P1.0
    SETB P1.0
    ;///////////HIEN THI HANG DON VI//////////////
    MOV A,B
    MOV DPTR,#MALED
    MOVC A,@A+DPTR
    MOV P2,A
    CLR P1.1
    SETB P1.1
    CALL DELAY
    SJMP MAIN
    ;//////////////
    MALED:
    DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
    ;//////////////////
    DELAY:
    PUSH 07
    PUSH 06
    MOV r6,#100
    DELAY1:
    MOV r7,#255
    DJNZ r7,$
    DJNZ r6,delay1
    POP 06
    POP 07
    RET
    END

    Click image for larger version

Name:	Untitled.jpg
Views:	1
Size:	211.6 KB
ID:	1411235

    Click image for larger version

Name:	Untitled2.jpg
Views:	1
Size:	217.6 KB
ID:	1411236

  • #2
    mình có sửa chút ít bạn coi lại xem sao, máy mình mới cài win chưa cài proteus.
    Code:
    org 00h
    MOV R0,#0
    JMP HIENTHI
    MAIN:
    JNB P3.0,SW1
    JNB P3.1,SW2
    SJMP MAIN
    SW1:
    jnb P3.0,$	;them doan nay thi so ko nhay lung tung nua
    
    INC R0
    MOV A,R0
    CJNE A,#100,HIENTHI
    MOV R0,#0
    JMP HIENTHI
    ;////////////////////
    SW2:
    jnb P3.1,$
    
    DEC R0
    MOV A,R0
    CJNE A,#255,HIENTHI
    MOV R0,#99
    JMP HIENTHI
    ;///////////////
    HIENTHI:
    ;///////////////HIEN THI HANG CHUC//////////////
    MOV A,R0
    MOV B,#10
    DIV AB
    MOV DPTR,#MALED
    MOvC A,@A+DPTR	; movc A,@A+DPTR
    MOV P2,A
    CLR P1.0
    SETB P1.0
    ;///////////HIEN THI HANG DON VI//////////////
    MOV A,B
    MOV DPTR,#MALED
    MOVC A,@A+DPTR
    MOV P2,A
    CLR P1.1
    SETB P1.1
    ;CALL DELAY 	; ko can delay tai dem so bang nut nhan
    JMP MAIN
    ;//////////////
    MALED:
    DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
    ;//////////////////
    DELAY:
    PUSH 07
    PUSH 06
    MOV r6,#100
    DELAY1:
    MOV r7,#255
    DJNZ r7,$
    DJNZ r6,delay1
    POP 06
    POP 07
    RET
    END
    PCCC

    Comment


    • #3
      về phần cứng thì mạch của bạn k cần phải phải phức tạp như vậy.
      với 2 led bạn chỉ cần nối như hình sau
      Click image for larger version

Name:	dem xuoi nguoc.jpg
Views:	1
Size:	82.4 KB
ID:	1354429
      về code: bạn cần thêm phần chống dội cho nút bấm vào như bạn "lep140389" đã sửa cho bạn. tuy nhiên phần code hiển thị của bạn vẫn sai. đầu tiên bạn phải tách riêng biệt phần chục và phần đơn vị ra trước, lưu 2 giá trị đó vào 2 ô nhớ, rồi sau đó mới giải mã dữ liệu trong 2 ô nhớ đó.
      bạn tham khảo code của mình
      Code:
      org 0
      	mov dptr,#bang_ma
      	mov r0,#0
      main:
      	call hien_thi
      	jb p3.0,kt1
      	call delay
      	jnb p3.0,$				;chong rung phim
      	inc r0
      	cjne r0,#100,main
      	mov r0,#0 
      	jmp main
      kt1:
      	jb p3.1,main
      	call delay
      	jnb p3.1,$				;chong rung phim
      	dec r0
      	cjne r0,#255,main
      	mov r0,#99 
      	jmp main
      ;=================
      hien_thi:
      	mov a,r0						
      	mov b,#10
      	div ab
      	movc a,@a+dptr			;lay ma led chuc 
      	mov 30h,a				;cat ma led chuc 
      	mov a,b
      	movc a,@a+dptr			;lay ma led don vi 
      	mov 31h,a				;cat ma led don vi 
      	;-----------------------
      	mov p2,31h				;chuyen ma led don vi
      	mov p1,#11111110b		;cho led don vi sang
      	call delay1				;chong lem
      	mov p1,#0ffh
      	;-------------------
      	mov p2,30h				;chuyen ma led chuc 
      	mov p1,#11111101b		;cho led chuc  sang
      	call delay1				;chong lem
      	mov p1,#0ffh
      	ret
      ;================
      delay1:
      	mov r1,#50
      	djnz r1,$
      	ret
      ;================
      delay:
      	mov r6,#40
      lap4:	
      	mov r7,#250
      	djnz r7,$
      	djnz r6,lap4
      	ret
      ;================
      bang_ma:
      	db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
      end
      file mô phỏng + code
      dem xuoi nguoc dung nut bam.rar

      Comment


      • #4
        mình đã thử mạch của bạn vietlamdt chạy tốt. Nhưng mình đã tách hàng chục và hàng đơn vị ra cho vào 2 ô nhớ nhưng vẫn ko đc bạn ạ. Bạn viết lại code mạch của mình cho mình xem với.

        Comment


        • #5
          thanks bạn lep140389 nhiều nhé nhưng mà chỉ được mỗi phần chống dội phím thôi, còn lại bệnh vẫn thế.hjc. mong bạn chỉ giáo

          Comment


          • #6
            Nguyên văn bởi chutinh Xem bài viết
            thanks bạn lep140389 nhiều nhé nhưng mà chỉ được mỗi phần chống dội phím thôi, còn lại bệnh vẫn thế.hjc. mong bạn chỉ giáo
            bệnh gì vẫn như thế, mình down ctr đó về chạy ok đúng đề bạn đưa ra mà, bạn xem lại xem

            Comment


            • #7
              Nguyên văn bởi chutinh Xem bài viết
              mình đã thử mạch của bạn vietlamdt chạy tốt. Nhưng mình đã tách hàng chục và hàng đơn vị ra cho vào 2 ô nhớ nhưng vẫn ko đc bạn ạ. Bạn viết lại code mạch của mình cho mình xem với.
              mình chỉnh sửa code của bạn như sau
              Code:
              ORG 0
              MOV R0,#0
              MAIN:
              SJMP HIENTHI 
              KT:
              JNB P3.0,SW1
              JNB P3.1,SW2
              SJMP MAIN
              ;----------------
              SW1:
              JNB P3.0,$         ;chờ bỏ tay ra khỏi nút ấn mới thực hiện lệnh tiếp -> chống rung phím
              INC R0
              ;MOV A,R0                       
              ;CJNE A,#100,HIENTHI       
              CJNE R0,#100,HIENTHI       ; ;R0 có thể so sánh trực tiếp
              MOV R0,#0
              SJMP HIENTHI
              ;////////////////////
              SW2:
              JNB P3.1,$         ;chờ bỏ tay ra khỏi nút ấn mới thực hiện lệnh tiếp -> chống rung phím
              DEC R0
              ;MOV A,R0                       
              ;CJNE A,#255,HIENTHI       
              CJNE R0,#255,HIENTHI       ; ;R0 có thể so sánh trực tiếp
              MOV R0,#99
              SJMP HIENTHI
              ;///////////////
              HIENTHI:
              ;///////////////HIEN THI HANG CHUC//////////////
              MOV A,R0
              MOV B,#10
              DIV AB
              MOV DPTR,#MALED
              MOVC A,@A+DPTR
              MOV P2,A
              CLR P1.1
              SETB P1.0
              CALL DELAY
              MOV P1,#0FFH       ;chống lem cho led
              ;///////////HIEN THI HANG DON VI//////////////
              MOV A,B
              MOV DPTR,#MALED
              MOVC A,@A+DPTR
              MOV P2,A
              CLR P1.0
              SETB P1.1
              CALL DELAY
              MOV P1,#0FFH       ;chống lem cho led
              SJMP KT
              ;//////////////
              MALED:
              DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
              ;//////////////////
              DELAY:
              PUSH 07
              PUSH 06
              MOV r6,#40
              DELAY1:
              MOV r7,#255
              DJNZ r7,$
              DJNZ r6,DELAY1       ;các nhãn phải cùng tên nhau, vì pinnacle phân biệt viết hoa và viết thường 
              POP 06
              POP 07
              RET
              END

              Comment


              • #8
                mình làm đc rồi bạn ạ.hihi. tại mình viết thiếu lệnh MOVC A,@A+DPTR thành MOC A,@A+DPTR. rất cảm ơn các bạn

                Comment


                • #9
                  ủa mình nhớ là có sửa đoạn đó cho bạn rồi mà, ko xem ah, với lại mih thắc mắc sao ko dùng 2 port chốt dữ liệu cho dễ mà cần j phải dung ic số vậy, có ứng dụng j hay ah.

                  Code:
                  org 00h
                  MOV R0,#0
                  JMP HIENTHI
                  MAIN:
                  JNB P1.0,SW1
                  JNB P1.1,SW2
                  SJMP MAIN
                  SW1:
                  jnb P1.0,$	;them doan nay thi so ko nhay lung tung nua
                  
                  INC R0
                  MOV A,R0
                  CJNE A,#100,HIENTHI
                  MOV R0,#0
                  JMP HIENTHI
                  ;////////////////////
                  SW2:
                  jnb P1.1,$
                  
                  DEC R0
                  MOV A,R0
                  CJNE A,#255,HIENTHI
                  MOV R0,#99
                  JMP HIENTHI
                  ;///////////////
                  HIENTHI:
                  ;///////////////HIEN THI HANG CHUC//////////////
                  MOV A,R0
                  MOV B,#10
                  DIV AB
                  MOV DPTR,#MALED
                  MOvC A,@A+DPTR	; movc A,@A+DPTR
                  MOV P2,A
                  
                  ;///////////HIEN THI HANG DON VI//////////////
                  MOV A,B
                  MOV DPTR,#MALED
                  MOVC A,@A+DPTR
                  MOV P3,A
                  
                  ;CALL DELAY 	; ko can delay tai dem so bang nut nhan
                  JMP MAIN
                  ;//////////////
                  MALED:
                  DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
                  ;//////////////////
                  
                  END
                  PCCC

                  Comment


                  • #10
                    Với mạch của anh Vietlamdt thì muốn cấy thêm 2 led đơn vào, 1 đỏ 1 xanh. số chẵn thì xanh sáng, số lẻ thì đỏ sáng
                    thì làm thế nào ạ
                    Mọi ng cho ý kiến nha...code hoàn chỉnh...thanks mọi ng

                    Comment


                    • #11
                      Nguyên văn bởi khacnghia_hd Xem bài viết
                      Với mạch của anh Vietlamdt thì muốn cấy thêm 2 led đơn vào, 1 đỏ 1 xanh. số chẵn thì xanh sáng, số lẻ thì đỏ sáng
                      thì làm thế nào ạ
                      Mọi ng cho ý kiến nha...code hoàn chỉnh...thanks mọi ng
                      Theo mình thì chỉ cần cấy thêm đoạn code vào phần HIỂN THỊ HÀNG ĐƠN VỊ là xong thôi. Chỉ cần thêm vào sau dòng movc a, @a+dptr vài dòng so sánh, nếu a = 0 hoặc a = 2 hoặc a = 4; = 6; = 8 thì cho led Xanh sáng, ngược lại cho led Đỏ sáng.

                      Comment


                      • #12
                        vẫn chưa xong cơ à
                        nghe vẻ lâu nhỉ

                        Comment


                        • #13
                          Chưa...tại mình mới học môn này mà thầy đã giao bài về làm..nên chưa biết gì cả..code đầy đủ khi cấy thêm led đơn xin mọi ng cho đầy đủ

                          Comment


                          • #14
                            Nguyên văn bởi khacnghia_hd Xem bài viết
                            Chưa...tại mình mới học môn này mà thầy đã giao bài về làm..nên chưa biết gì cả..code đầy đủ khi cấy thêm led đơn xin mọi ng cho đầy đủ
                            Mình nghĩ bạn có thể cấy thêm vào chỗ HIỂN THỊ HÀNG ĐƠN VỊ như sau:
                            Code:
                            ;=============================================
                            ; Led Xanh nối với p0.0
                            ; Led Đỏ nối với p0.1
                            ; Led sáng khi tín hiệu xuất ra ở Port là mức 1
                            ; Sau lệnh "org 0h" phải đặt port 0 = 0
                            ;=============================================
                            ;///////////HIEN THI HANG DON VI//////////////
                            	MOV	A, B
                            	MOV	DPTR, #MALED
                            	MOVC	A, @A+DPTR
                            	MOV	R7, A
                            	CJNE	R7, #0, NEXT
                            NEXT:	
                            	CJNE	R7, #2, NEXT1
                            NEXT1:	
                            	CJNE	R7, #4, NEXT2
                            NEXT2:	
                            	CJNE	R7, #6, NEXT3
                            NEXT3:	
                            	CJNE	R7, #8, SO_LE
                            	SETB	P0.0		; Led Xanh sáng
                            	SJMP	NEXT4
                            SO_LE:	SETB	P0.1		; Led Đỏ sáng
                            	CLR	P0.0
                            NEXT4:	
                            	MOV P3,A
                            ....

                            Comment


                            • #15
                              Sao mình thử rùi mà vẫn báo lỗi nhỉ
                              híc

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X