Thông báo

Collapse
No announcement yet.

Lập trình assembly cho 8051 cần hỏi mấy bạn. Giúp mình với!

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

  • Lập trình assembly cho 8051 cần hỏi mấy bạn. Giúp mình với!

    Đây là code mình viết. Đề bài là: có 2 nút nhấn UP, DOWN. Khi nhấn UP thì cộng thêm 2 đơn vị. Nhấn DOWN thì trừ 2 đơn vị. Số lớn nhất hiên thị là 9, nhỏ nhất là 1. Ban đầu hiển thị số 1. hiển thị led 7 đoạn. các pro chỉ mình với. sao mình nhấn nút thì led không sáng gì hết. Thanks các pro nhiều nha!
    Lần đầu tiên post bài, có gì mong các bạn thông cảm!!! Viết bằng assembly 89c51


    org 0000h

    DEM EQU R0
    mov DPTR,#CODE7DOAN
    MOV DEM,#0F9H
    MOV P2,DEM
    SW1 BIT P1.0
    SW2 BIT P1.1
    DEMLEN:
    JB SW1,$
    JNB SW1,$
    MOV DEM,P2
    MOV A,DEM
    CJNE A,#9,DEMLEN1
    MOV P2,#90H
    DEMLEN1:
    ADD A,#2
    CALL HIENTHI
    CALL DELAY
    JMP $
    DEMXUONG:
    JNB P1.1,DEMLEN
    JB P1.1,$
    CJNE DEM,#1,DEMXUONG1
    MOV P2,#090H
    JMP $
    DEMXUONG1:
    MOV A,DEM
    SUBB A,#2
    CALL HIENTHI
    CALL DELAY
    JMP $


    HIENTHI:
    MOVC A,@A+DPTR
    MOV P2,A
    RET
    DELAY:
    MOV R1,#50
    DELAY1:
    MOV TMOD,#10H
    MOV TH1,#HIGH(-10000)
    MOV TL1,#LOW(-10000)
    SETB TR1
    JNB TF1,$
    CLR TF1
    CLR TR1
    DJNZ R1,DELAY1
    RET
    CODE7DOAN:
    DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
    end

  • #2
    thế này thì sao, thử xem
    Code:
    org	 0000h
    
    DEM	 EQU	 R0
    mov	 DPTR,#CODE7DOAN
    SW1	 BIT	 P1.0
    SW2	 BIT	 P1.1
    MOV	DEM,#1
    MOV	A,DEM
    CALL	HIENTHI
    UP:
    JB	SW1,DOWN
    JNB	SW1,$
    MOV	A,DEM
    INC	A
    INC	A
    CJNE	A,#11,NEXT_UP
    MOV	A,#1
    NEXT_UP:
    MOV	DEM,A
    CALL	DELAY
    CALL	HIENTHI
    SJMP	UP
    DOWN:
    JB	SW2,UP
    JNB	SW2,$
    MOV	A,DEM
    DEC	A
    DEC	A
    CJNE	A,#0FFH,NEXT_DOWN
    MOV	A,#9
    NEXT_DOWN:
    MOV	DEM,A
    CALL	DELAY
    CALL	HIENTHI
    SJMP	UP
    HIENTHI: 
    MOVC	A,@A+DPTR
    MOV	 P2,A
    RET
    DELAY:
    MOV	 R1,#50
    DELAY1:
    MOV	 TMOD,#10H
    MOV	 TH1,#HIGH(-10000)
    MOV	 TL1,#LOW(-10000)
    SETB	TR1
    JNB	 TF1,$
    CLR	 TF1
    CLR	 TR1
    DJNZ	R1,DELAY1
    RET
    CODE7DOAN:
    DB	 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
    end

    Comment


    • #3
      Được rồi! Cám ơn bạn nhiều lắm nha!!!

      Comment


      • #4
        các bác xem hộ e chỗ này sai ở đâu mà e làm mãi ko dc.chỉ cần nó sáng nhấp nháy thui mà
        ------SANGNHAPNAY-------
        CT1: MOV R5,#0
        MOV DPTR,#BANG
        CLR A
        TAO: MOV A,R5
        MOVC A,@A+DPTR
        MOV P1,A
        CALL TRE
        INC R5
        CJNE R5,#2,TAO
        JMP CT1
        BANG:
        DB: 000H,0FFH
        RET
        ------TRE--------
        TRE: MOV RO,#10
        T1 : MOV R1,#100
        T2 : MOV R2,#150
        T3 : DJNZ R2,T3
        DJNZ R0,T1
        RET
        ------CHUONGTRINHCHINH-----
        MAIN: LCALL CT1
        END
        thanks các bác nha

        Comment


        • #5
          Nguyên văn bởi nguyenvandon Xem bài viết
          các bác xem hộ e chỗ này sai ở đâu mà e làm mãi ko dc.chỉ cần nó sáng nhấp nháy thui mà
          ------SANGNHAPNAY-------
          CT1: MOV R5,#0
          MOV DPTR,#BANG
          CLR A
          TAO: MOV A,R5
          MOVC A,@A+DPTR
          MOV P1,A
          CALL TRE
          INC R5
          CJNE R5,#2,TAO
          JMP CT1
          BANG:
          DB: 000H,0FFH
          RET
          ------TRE--------
          TRE: MOV RO,#10
          T1 : MOV R1,#100
          T2 : MOV R2,#150
          T3 : DJNZ R2,T3
          DJNZ R0,T1
          RET
          ------CHUONGTRINHCHINH-----
          MAIN: LCALL CT1
          END
          thanks các bác nha
          TRE: mov R0, #10 ; rờ 0 chứ không phải rờ O bạn nhé!
          Thêm dòng sau vào trước dòng END:
          sjmp $

          Comment


          • #6
            có bác nào qua bên luồng help code asm 8951 giúp em 1 tí với
            |

            Comment


            • #7
              Nguyên văn bởi Ck33spkt Xem bài viết
              TRE: mov R0, #10 ; rờ 0 chứ không phải rờ O bạn nhé!
              Thêm dòng sau vào trước dòng END:
              sjmp $
              anh ơi dup em với sao em viết code này mãi nó không chạy nhỉ?em sửa mãi mà không làm thế nào cho nó di chuyển qua trái và qua phải được.bây giờ em muốn nó dịch từ dòng 2 lên dòng 1 được không?a viết thêm vào dúp em với,e loay hoay mãi không ra.thaks a nhieu nha

              chuong trinh la: link: LCD_clk04-dt2.rar
              ;;;;;;;;;;;;;;;;;;;;;;;
              ORG 00H
              MAIN:
              MOV A,#38H ;khoi tao lcd che do 2 dong 5x7
              LCALL GUILENH
              LCALL DELLAY
              ;;;;;;;;;;;;;;;;;;;;;;;;;;
              MOV A,#0EH ;bat hien thi nhap nhay con tro
              LCALL GUILENH
              LCALL DELLAY
              ;;;;;;;;;;;;;;;;;;;;;;;
              MOV A,#01H ;xoa man hnh hien thi
              LCALL GUILENH
              LCALL DELLAY
              ;;;;;;;;;;;;;;;;;;;;
              MOV A,#80H ;dua con tro ve dau hang 1
              LCALL GUILENH
              LCALL DELLAY
              MOV DPTR,#DONG1 ;hien thi len dong1
              LCALL HIENTHI
              LCALL DELLAY
              ;;;;;;;;;;;;;;;;;;;;;;;
              MOV A,#0C0H ;;dua con tro ve dau hang 2
              LCALL GUILENH
              LCALL DELLAY
              MOV DPTR,#DONG2 ;;hien thi len dong2
              LCALL HIENTHI
              LCALL DELLAY
              ;;;;;;;;;;;;;;;;;;;;;;;;;;;
              mov r3,#0
              lap:
              mov a,#1ch
              lcall guilenh
              lcall dellay
              lcall dellay
              lcall dellay
              lcall dellay
              lcall dellay
              inc r3
              cjne r3,#32,lap
              mov r3,#0
              JMP $
              ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              GUILENH: ;chuong trinh con lenh dieu khien
              LCALL KTTT
              MOV P2,A
              CLR P3.0
              CLR P3.1
              SETB P3.2
              CLR P3.2
              RET
              GUIDULIEU: ;;chuong trinh con du lieu
              LCALL KTTT
              MOV P2,A
              SETB P3.0
              CLR P3.1
              SETB P3.2
              CLR P3.2
              RET
              KTTT: ;;chuong trinh con kiem tra trang thai
              SETB P2.7
              CLR P3.0
              SETB P3.1
              BACK:
              CLR P3.2
              SETB P3.2
              JB P2.7,BACK
              RET
              HIENTHI: ;;chuong trinh con hien thi
              MOV A,R0 ;dua du lieu vao thanh ghi R0
              MOVC A,@A+DPTR
              LCALL GUIDULIEU
              MOV A,#06H ;tang con tro chong trong lan
              LCALL GUILENH
              LCALL DELLAY
              INC R0
              CJNE R0,#16,HIENTHI ;so sanh
              MOV R0,#0
              LCALL DELLAY
              RET
              DELLAY:
              MOV R5,#20
              BCAD: MOV R6,#20
              CABD: MOV R7,#20
              DJNZ R7,$
              DJNZ R6,CABD
              DJNZ R5,BCAD
              RET
              DATAS:
              DONG1:
              DB 'NGUYEN ANH VIET '
              DONG2:
              DB 'NGUYEN ANH VIET '
              END

              Comment


              • #8
                Nguyên văn bởi nguyenvandon Xem bài viết
                các bác xem hộ e chỗ này sai ở đâu mà e làm mãi ko dc.chỉ cần nó sáng nhấp nháy thui mà
                ------SANGNHAPNAY-------
                CT1: MOV R5,#0
                MOV DPTR,#BANG
                CLR A
                TAO: MOV A,R5
                MOVC A,@A+DPTR
                MOV P1,A
                CALL TRE
                INC R5
                CJNE R5,#2,TAO
                JMP CT1
                BANG:
                DB: 000H,0FFH
                RET
                ------TRE--------
                TRE: MOV RO,#10
                T1 : MOV R1,#100
                T2 : MOV R2,#150
                T3 : DJNZ R2,T3
                DJNZ R0,T1
                RET
                ------CHUONGTRINHCHINH-----
                MAIN: LCALL CT1
                END
                thanks các bác nha
                Bác mới học cái này ak? sai lỗi cơ bản quá....... Các lỗi bác gặp như sau:
                1. "DB: 000H,0FFH" ko có dấu ":" ở đây đâu bạn ơi.
                2. Mấy chỗ chú thích thiếu dấu ";" nhé
                3. K đc đặt tên nhãn trùng vs tên địa chỉ của VDK. Bác đặt T1 là sai(trùng vs đầu vào couter 1 ở chân P3.5 đó)
                Last edited by phuphuongbk; 30-10-2012, 01:05.

                Comment


                • #9
                  Nguyên văn bởi vietbiker Xem bài viết
                  anh ơi dup em với sao em viết code này mãi nó không chạy nhỉ?em sửa mãi mà không làm thế nào cho nó di chuyển qua trái và qua phải được.bây giờ em muốn nó dịch từ dòng 2 lên dòng 1 được không?a viết thêm vào dúp em với,e loay hoay mãi không ra.thaks a nhieu nha

                  chuong trinh la: link: LCD_clk04-dt2.rar
                  ;;;;;;;;;;;;;;;;;;;;;;;
                  ORG 00H
                  MAIN:
                  MOV A,#38H ;khoi tao lcd che do 2 dong 5x7
                  LCALL GUILENH
                  LCALL DELLAY
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;
                  MOV A,#0EH ;bat hien thi nhap nhay con tro
                  LCALL GUILENH
                  LCALL DELLAY
                  ;;;;;;;;;;;;;;;;;;;;;;;
                  MOV A,#01H ;xoa man hnh hien thi
                  LCALL GUILENH
                  LCALL DELLAY
                  ;;;;;;;;;;;;;;;;;;;;
                  MOV A,#80H ;dua con tro ve dau hang 1
                  LCALL GUILENH
                  LCALL DELLAY
                  MOV DPTR,#DONG1 ;hien thi len dong1
                  LCALL HIENTHI
                  LCALL DELLAY
                  ;;;;;;;;;;;;;;;;;;;;;;;
                  MOV A,#0C0H ;;dua con tro ve dau hang 2
                  LCALL GUILENH
                  LCALL DELLAY
                  MOV DPTR,#DONG2 ;;hien thi len dong2
                  LCALL HIENTHI
                  LCALL DELLAY
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  mov r3,#0
                  lap:
                  mov a,#1ch
                  lcall guilenh
                  lcall dellay
                  lcall dellay
                  lcall dellay
                  lcall dellay
                  lcall dellay
                  inc r3
                  cjne r3,#32,lap
                  mov r3,#0
                  JMP $
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  GUILENH: ;chuong trinh con lenh dieu khien
                  LCALL KTTT
                  MOV P2,A
                  CLR P3.0
                  CLR P3.1
                  SETB P3.2
                  CLR P3.2
                  RET
                  GUIDULIEU: ;;chuong trinh con du lieu
                  LCALL KTTT
                  MOV P2,A
                  SETB P3.0
                  CLR P3.1
                  SETB P3.2
                  CLR P3.2
                  RET
                  KTTT: ;;chuong trinh con kiem tra trang thai
                  SETB P2.7
                  CLR P3.0
                  SETB P3.1
                  BACK:
                  CLR P3.2
                  SETB P3.2
                  JB P2.7,BACK
                  RET
                  HIENTHI: ;;chuong trinh con hien thi
                  MOV A,R0 ;dua du lieu vao thanh ghi R0
                  MOVC A,@A+DPTR
                  LCALL GUIDULIEU
                  MOV A,#06H ;tang con tro chong trong lan
                  LCALL GUILENH
                  LCALL DELLAY
                  INC R0
                  CJNE R0,#16,HIENTHI ;so sanh
                  MOV R0,#0
                  LCALL DELLAY
                  RET
                  DELLAY:
                  MOV R5,#20
                  BCAD: MOV R6,#20
                  CABD: MOV R7,#20
                  DJNZ R7,$
                  DJNZ R6,CABD
                  DJNZ R5,BCAD
                  RET
                  DATAS:
                  DONG1:
                  DB 'NGUYEN ANH VIET '
                  DONG2:
                  DB 'NGUYEN ANH VIET '
                  END
                  Nhìn 1 lúc mà hoa cả mắt---> nản.
                  Bạn muốn dịch qua trái hay dịch qua phải thì chọn lệnh dịch màn hình ấy. Nếu muốn dịch dòng qua phải thì dịch màn hình qua trái và ngược lại nhé!

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X