Thông báo

Collapse
No announcement yet.

CẦN GIÚP hiệu ứng 8 led với 89c2051

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

  • CẦN GIÚP hiệu ứng 8 led với 89c2051

    Em mới học vi xử lý nên còn gà mờ .anh em giúp em làm bài tập này với .
    " từ sơ đồ mạch trên và code mẫu hãy viết tiếp để tạo thêm 3 hiệu ứng " (sáng dồn , sáng lẽ chẵn ,sáng chạy vào chạy ra,...)
    Click image for larger version

Name:	led8.JPG
Views:	1
Size:	71.5 KB
ID:	1414180
    Click image for larger version

Name:	led8code.JPG
Views:	1
Size:	41.5 KB
ID:	1414181
    nhờ mấy anh viết tiếp dùm e cái code

  • #2
    Bạn tham khảo:
    sáng đuổi:
    mov p1,#00h
    mov a,#00h
    setb c
    mp1:
    mov p1,a
    acall delay
    mov p1,#00h
    rrc a
    jnc mp1
    ret
    sáng chan lẽ:
    mov p1,#01010101b
    acall delay
    clp p1
    acall delay
    ret
    sang chay vao chay ra:
    mov p1,#18h
    acall delay
    mov p1,#24h
    acall delay
    mov p1,#42h
    acall delay
    mov p1,#81h
    acall delay
    mov p1,#81h
    acall delay
    mov p1,#42h
    acall delay
    mov p1,#24h
    acall delay
    mov p1,#18h
    ret
    trên đó là 3 hiệu ứng, mỗi hiệu ứng chạy 1 lượt, nếu bạn cân mấy lượt thì cứ cài đặt cho nó.
    delay thì tùy bạn cho chạy nhanh hay chậm mà set cho thích hợp.
    chúc bạn vui
    Không biết ngày mai sẽ ra sao?
    Mà có ra sao cũng chẳng sao.

    Comment


    • #3
      Nguyên văn bởi rongdatvamuc Xem bài viết
      Bạn tham khảo:
      sáng đuổi:
      mov p1,#00h
      mov a,#00h
      setb c
      mp1:
      mov p1,a
      acall delay
      mov p1,#00h
      rrc a
      jnc mp1
      ret
      sáng chan lẽ:
      mov p1,#01010101b
      acall delay
      clp p1
      acall delay
      ret
      sang chay vao chay ra:
      mov p1,#18h
      acall delay
      mov p1,#24h
      acall delay
      mov p1,#42h
      acall delay
      mov p1,#81h
      acall delay
      mov p1,#81h
      acall delay
      mov p1,#42h
      acall delay
      mov p1,#24h
      acall delay
      mov p1,#18h
      ret
      trên đó là 3 hiệu ứng, mỗi hiệu ứng chạy 1 lượt, nếu bạn cân mấy lượt thì cứ cài đặt cho nó.
      delay thì tùy bạn cho chạy nhanh hay chậm mà set cho thích hợp.
      chúc bạn vui
      anh viết cụ thể từ đầu đến cuối được không anh .em k biết ghép các phần với lặp lại các hiệu ứng đó nữa .học lý thuyết có 2,3 pữa nên còn gà mờ

      Comment


      • #4
        Nguyên văn bởi tychuot289 Xem bài viết
        anh viết cụ thể từ đầu đến cuối được không anh .em k biết ghép các phần với lặp lại các hiệu ứng đó nữa .học lý thuyết có 2,3 pữa nên còn gà mờ
        cách viết của bạn nếu tạo mảng const gọi phần tử trong mảng ra sẽ gọn hơn

        Comment


        • #5
          ai giúp e viết hết và giải thích câu lệnh được không .gần nộp bài tập rồi .gặp ông thầy gay bà điên bà khùng nữa

          Comment


          • #6
            Nguyên văn bởi tychuot289 Xem bài viết
            ai giúp e viết hết và giải thích câu lệnh được không .gần nộp bài tập rồi .gặp ông thầy gay bà điên bà khùng nữa
            BẠN nên áp dụng cách tra bảng là tốt nhất cho bài này .
            ;**********************
            xuat equ p...

            org 0000
            ljmp main

            main:
            canh1:
            mov dptr,#c_trinh1
            mov r0,#8
            mov r1,#0
            laplai1:mov a,r1
            movc @a+dptr
            mov xuat,a
            lcall delay
            inc r1
            djnz r0,laplai1
            canh2:
            mov dptr,#c_trinh2 ; thay đổi
            mov r0,#8
            mov r1,#0
            laplai2:mov a,r1
            movc @a+dptr
            mov xuat,a
            lcall delay;co the thay đổi để phù hợp c trinh
            inc r1
            djnz r0,laplai2
            ljmp.....
            ;***********************
            delay: tu viet
            ret

            c_trinh1: db 01h,02h,04h,08h,10h,20h,40h,80h;chay tu trai qua phai...led sang muc 1
            c_trinh2: db 10000001b,01000010b,00100100b,00011000b,00011000b, 00100100b,01000010b,10000001b

            end



            ;bạn cố giắng học đi nhé,chứ viết như vậy là quá rỏ rồi.....

            Comment


            • #7
              Chương trình đầy đủ:


              $MOD51
              ORG 00H
              MAIN:
              ACALL HIEUUNG1
              ACALL HIEUUNG2
              ACALL HIEUUNG3
              SJMP MAIN
              HIEUUNG1:
              PUSH 00H
              PUSH 01H
              MOV DPTR,#SANGDUOI
              MOV R1,#5 ;SO LUOT CHAY ?K M?I HIEU UNG LA 5 LAN
              MP1:
              MOV R0,#00H
              MOV P1,#00H
              ACALL DELAY
              MP2:
              MOV A,R0
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DELAY
              INC R0
              CJNE R0,#8,MP2
              DJNZ R1,MP1
              POP 01H
              POP 00H
              RET
              HIEUUNG2:
              PUSH 00H
              PUSH 01H
              MOV DPTR,#SANGDAN
              MOV R1,#5
              MP11:
              MOV R0,#00H
              MOV P1,#00H
              ACALL DELAY
              MP22:
              MOV A,R0
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DELAY
              INC R0
              CJNE R0,#8,MP22
              DJNZ R1,MP11
              POP 01H
              POP 00H
              RET
              HIEUUNG3:
              PUSH 00H
              PUSH 01H
              MOV DPTR,#SANGCHANLE
              MOV P1,#00H
              ACALL DELAY
              MOV R1,#5
              MP111:
              MOV R0,#00H
              MP222:
              MOV A,R0
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DELAY
              INC R0
              CJNE R0,#2,MP222
              DJNZ R1,MP111
              POP 01H
              POP 00H
              RET
              DELAY: ;DELAY 0.5S
              PUSH 00H
              PUSH 01H
              MOV TMOD,#01H
              MOV R0,#100
              DEL:
              MOV TH0,#HIGH(-5000)
              MOV TL0,#LOW(-5000)
              SETB TR0
              JNB TF0,$
              CLR TR0
              CLR TF0
              DJNZ R0,DEL
              POP 01H
              POP 00H
              RET

              SANGDUOI:
              DB 01H,02H,04H,08H,10H,20H,40H,80H
              SANGDAN:
              DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
              SANGCHANLE:
              DB 10101010B,01010101B
              END
              Không biết ngày mai sẽ ra sao?
              Mà có ra sao cũng chẳng sao.

              Comment


              • #8
                Nguyên văn bởi rongdatvamuc Xem bài viết
                Chương trình đầy đủ:


                $MOD51
                ORG 00H
                MAIN:
                ACALL HIEUUNG1
                ACALL HIEUUNG2
                ACALL HIEUUNG3
                SJMP MAIN
                HIEUUNG1:
                PUSH 00H
                PUSH 01H
                MOV DPTR,#SANGDUOI
                MOV R1,#5 ;SO LUOT CHAY ?K M?I HIEU UNG LA 5 LAN
                MP1:
                MOV R0,#00H
                MOV P1,#00H
                ACALL DELAY
                MP2:
                MOV A,R0
                MOVC A,@A+DPTR
                MOV P1,A
                ACALL DELAY
                INC R0
                CJNE R0,#8,MP2
                DJNZ R1,MP1
                POP 01H
                POP 00H
                RET
                HIEUUNG2:
                PUSH 00H
                PUSH 01H
                MOV DPTR,#SANGDAN
                MOV R1,#5
                MP11:
                MOV R0,#00H
                MOV P1,#00H
                ACALL DELAY
                MP22:
                MOV A,R0
                MOVC A,@A+DPTR
                MOV P1,A
                ACALL DELAY
                INC R0
                CJNE R0,#8,MP22
                DJNZ R1,MP11
                POP 01H
                POP 00H
                RET
                HIEUUNG3:
                PUSH 00H
                PUSH 01H
                MOV DPTR,#SANGCHANLE
                MOV P1,#00H
                ACALL DELAY
                MOV R1,#5
                MP111:
                MOV R0,#00H
                MP222:
                MOV A,R0
                MOVC A,@A+DPTR
                MOV P1,A
                ACALL DELAY
                INC R0
                CJNE R0,#2,MP222
                DJNZ R1,MP111
                POP 01H
                POP 00H
                RET
                DELAY: ;DELAY 0.5S
                PUSH 00H
                PUSH 01H
                MOV TMOD,#01H
                MOV R0,#100
                DEL:
                MOV TH0,#HIGH(-5000)
                MOV TL0,#LOW(-5000)
                SETB TR0
                JNB TF0,$
                CLR TR0
                CLR TF0
                DJNZ R0,DEL
                POP 01H
                POP 00H
                RET

                SANGDUOI:
                DB 01H,02H,04H,08H,10H,20H,40H,80H
                SANGDAN:
                DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
                SANGCHANLE:
                DB 10101010B,01010101B
                END
                đoạn đầu $MOD51
                ORG 00H
                nghĩa là sao anh .em viết giống như anh nhưng k đc .bị lỗi gì đó .chip của em là at98c2051

                Comment


                • #9
                  em thấy hình như chủ thớt viết = C mà các bác toàn viết ASM thì phải

                  Comment


                  • #10
                    Đoạn đầu là ký hiệu để nhận chip 8051 trong chương trình ASM.
                    Chương trình này chỉ dành cho phần mềm ASM thôi, còn nếu bạn viết bằng C thì không được rồi.
                    Mình cũng không biết C.
                    Không biết ngày mai sẽ ra sao?
                    Mà có ra sao cũng chẳng sao.

                    Comment


                    • #11
                      bùn gê ta .em đang cần C

                      Comment


                      • #12
                        Cao thủ nào giúp bạn tychuot289 với kìa, chương trình C đơn giản thôi, mình không học C nên không biết gì hết...
                        Không biết ngày mai sẽ ra sao?
                        Mà có ra sao cũng chẳng sao.

                        Comment


                        • #13
                          mới học nên còn gà .ai giúp với

                          Comment


                          • #14
                            Nguyên văn bởi tychuot289 Xem bài viết
                            mới học nên còn gà .ai giúp với
                            Mình đã viết lại code cho bạn,nhưng hơi chỉnh sửa 1 chút,nếu nối mạch như bạn thì mức tích cực là 1 (thì led sáng),nhưng nếu làm mạch thực thì người ta ko làm vậy mà sẽ cho mức tích cực là 0 (vì con 89 mà ở chế độ xả dòng thì led ko đủ sáng),code mình viết lại như sau:
                            #include<At892051.h> // khai bao thu vien cho 89c2051
                            void delay (int ms) // ham tao tre
                            {
                            int i,j;
                            for(i=0;i<ms;i++)
                            {
                            for(j=0;j<125;j++)
                            {}
                            }
                            }
                            // KHAI BAO MANG
                            unsigned char mang1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00},// SANG DON
                            mang2[]={0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e} ; // sang chay vao chay ra

                            void main()
                            {
                            int i;
                            while(1)
                            {
                            for(i=0;i<8;i++) // sang don
                            {
                            P1=mang1[i]; delay(300);
                            }
                            P1=0xff;delay(500);
                            for(i=0;i<8;i++) // sang ra-vao
                            {
                            P1=mang2[i]; delay(300);
                            }
                            P1=0xff;delay(500);
                            for(i=0;i<4;i++) // led chan led-sang tat
                            { P1=0xaa;delay(300);
                            P1=0x55;delay(300);
                            }
                            P1=0xff;
                            delay(1500);
                            }
                            }

                            Click image for larger version

Name:	adc.jpg
Views:	1
Size:	127.5 KB
ID:	1366731
                            Last edited by viboyth.haui; 08-09-2012, 21:40.
                            vanduc0211@gmail.com

                            Comment


                            • #15
                              Nguyên văn bởi viboyth.haui Xem bài viết
                              Mình đã viết lại code cho bạn,nhưng hơi chỉnh sửa 1 chút,nếu nối mạch như bạn thì mức tích cực là 1 (thì led sáng),nhưng nếu làm mạch thực thì người ta ko làm vậy mà sẽ cho mức tích cực là 0 (vì con 89 mà ở chế độ xả dòng thì led ko đủ sáng),code mình viết lại như sau:

                              [ATTACH=CONFIG]51440[/ATTACH]
                              lặp lại hiệu ứng vài lần thì thêm gì nữa bạn .bạn viết kiểu sáng dồn nháy từng led rồi dồn lại không .kiểu dồn của bạn là sáng dần rồi .thêm kiểu tắt dần cũng đc

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X