Thông báo

Collapse
No announcement yet.

Hỏi về code led cho 89c51!

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

  • :d ASM mà. có bạn học cách lập trình bằng C đi. nhanh gọn hơn nhiều đấy. chương trình trên có thể viết như sau:
    org 00h
    sjmp start
    org 30h
    start:
    mov a,#00h
    mov p1,a
    setb c
    rlc a
    lap:
    mov p1,a
    rl a
    call cham
    sjmp lap
    ;================
    cham:
    mov r0,#0ffh
    cham1:
    nop
    nop
    djnz r0, cham1
    ret

    end

    Comment


    • lập trình C cho VDK. cái này mình cũng không biết nhiều lắm (vì mình dùng asm). C cho vdk là sử dụng keilC

      Comment


      • Nguyên văn bởi gasa.khtn Xem bài viết
        :d ASM mà. có bạn học cách lập trình bằng C đi. nhanh gọn hơn nhiều đấy. chương trình trên có thể viết như sau:
        org 00h
        sjmp start
        org 30h
        start:
        mov a,#00h
        mov p1,a
        setb c
        rlc a
        lap:
        mov p1,a
        rl a
        call cham
        sjmp lap
        ;================
        cham:
        mov r0,#0ffh
        cham1:
        nop
        nop
        djnz r0, cham1
        ret

        end
        Ngắn hơn là phải goy.Đâu có hiệu ứng j đâu hj...0ffh là sáng hết hoặc tắt hết.

        Comment


        • Vâng..!
          Em cảm ơn các bác nhé..!

          Comment


          • bạn nguyentot90 này. bạn đọc kĩ lại tẹo đi. # 0ffh là ở thủ tục làm chậm mà. ảnh hưởng gì tới việc xuất ra cổng chứ. đây là 1 bài quá đơn giản chỉ là cho led nháy lần lượt trên 1 port thôi mà.

            Comment


            • Anh em ơi em mới học kei c chưa biết gì cả! Em học ô tô k học điện tư nên hơi khó . Em vẫn muốn học. Anh em giúp đỡ nha!
              Thank!!!

              Comment


              • Anh em ơi em mới học kei c chưa biết gì cả! Em học ô tô k học điện tư nên hơi khó . Em vẫn muốn học. Anh em giúp đỡ nha!
                Thank!!!

                Comment


                • Bây giờ lllinhnho muốn học cái gì..?

                  Comment


                  • Nguyên văn bởi Tuananh_95 Xem bài viết
                    Với code này
                    ORG 0000H
                    main:
                    MOV P1,#00000001B
                    CALL DELAY
                    MOV P1,#00000010B
                    CALL DELAY
                    MOV P1,#00000100B
                    CALL DELAY
                    MOV P1,#00001000B
                    CALL DELAY
                    MOV P1,#00010000B
                    CALL DELAY1
                    MOV P1,#00100000B
                    CALL DELAY1
                    MOV P1,#01000000B
                    CALL DELAY1
                    MOV P1,#10000000B
                    CALL DELAY
                    jmp main
                    DELAY:
                    MOV R3, # 255
                    HERE2:
                    MOV R4, # 255
                    HERE:
                    DJNZ R4, HERE
                    DJNZ R3, HERE2
                    RET
                    DELAY1:
                    MOV R6,#55
                    HERE4:
                    MOV R7,#255
                    HERE3:
                    DJNZ R7,HERE3
                    DJNZ R6,HERE4
                    RET
                    END

                    đc chia làm mấy phần chính vậy bác
                    VD:
                    ORG 0000H
                    main: (mở đầu)

                    MOV P1,#00000001B
                    CALL DELAY
                    MOV P1,#00000010B
                    CALL DELAY
                    MOV P1,#00000100B
                    CALL DELAY
                    MOV P1,#00001000B
                    CALL DELAY
                    MOV P1,#00010000B
                    CALL DELAY1
                    MOV P1,#00100000B
                    CALL DELAY1
                    MOV P1,#01000000B
                    CALL DELAY1
                    MOV P1,#10000000B
                    CALL DELAY
                    (phần thân dùng để điều khiển các port P0, P1, P2, P3)

                    jmp main
                    DELAY:
                    MOV R3, # 255
                    HERE2:
                    MOV R4, # 255
                    HERE:
                    DJNZ R4, HERE
                    DJNZ R3, HERE2
                    RET
                    DELAY1:
                    MOV R6,#55
                    HERE4:
                    MOV R7,#255
                    HERE3:
                    DJNZ R7,HERE3
                    DJNZ R6,HERE4
                    RET
                    (không biết, giải đáp giúp e phần này)

                    END
                    (kết thúc chương trình)
                    Chương trình này thì đâu có gì đâu: như bác hỏi thì nó chia làm 2 phần : phần 1 là xuất tín hiệu ra Port 1,phần 2 là delay.
                    Về phần 1 thì trong con 89c51 có thanh ghi A mình có thể xoay giá trị cho từng bit trong 8 bit nên mình không cần MOV từ dòng như vậy nên phần main của nó sẽ rất ngắn ha,câu lệnh thì nó sẽ như vậy:
                    MAIN:
                    MOV A,01H
                    MOV P1,A
                    CALL DELAY
                    RL A
                    LJMP MAIN
                    ......
                    Về phần 2 delay thì mình có giải thích 1 bài ở trang 12...
                    |

                    Comment


                    • Cũng từ người không biết gi! Lên diễn đàn thì mình cũng làm dc 1 vài món sơ sơ. Đây là code C(tự chế). Có ai cảm thấy viết cách 2 hơn thì cho mình ý kiến nha! Mình đang đau đầu với cái sáng dồn! Nghĩ hoài mà không ra thuật toán! Còn đây là 1 vài hiệu ứng đơn giản, mình hiểu sao viết vậy!!!!!!
                      Code:
                      //********************************************************************************
                        //****************************LED Trai Tim
                       // ****************************Creat by Nguyen Minh Trí_P9FC;
                       //******************************7/03/2012;
                      //*********************************************************************************
                      #include <REGX52.H>
                      //**********************************************************************************
                      //Tao ham thoi gian tre de duy tri thoi gian sang cho led;
                      void delay(unsigned int ms) //ms co 1000 nen khia bao kieu int
                      {
                      	unsigned int i,j;
                      	for(i=0;i<ms;i++)
                      	for(j=0;j<121;j++)
                      	{}//Khong lam gi ca
                      }
                      // Hieu ung tat het
                      void tat()
                      {
                      	P0=P1=P2=P3=0x00;delay(100);// tat het cac led
                      }	 
                      // hieu ung sang het
                      void sang()
                      {
                         P0=P1=P2=P3=0xFF;delay(100);// sang het cac led
                      }
                      void hieu_ung_1()// chop tat
                      {
                      	unsigned i;
                      	for(i=0;i<1;i++)
                      	{
                      	P0=P1=P2=P3=0x00;delay(100);
                      	P0=P1=P2=P3=0xFF;delay(100);
                      	}
                      }
                      	
                      
                      //nhap nhay bong thu 1 va 8
                      void nhapnhay_1_8()
                      {
                      	unsigned i;
                      	for(i=0;i<3;i++)
                      	{
                      	P0=P1=P2=P3=0x00;delay(100);
                      	P0=P1=P2=P3=0x81;delay(100);
                      	
                      	}
                      }
                      //****************************Sang tat ca rui tat moi lan 1 con
                      void hieu_ung_2a() // port0
                      {
                      	char i;
                      	unsigned char a[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};
                      	
                      	for(i=0;i<9;i++)
                      	{
                      	P0=a[i];
                      	delay(100);
                      	}
                      }
                      void hieu_ung_2b() // hieu ung 2 o port1
                      {
                      	char i;
                      	unsigned char a[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
                      	
                      	for(i=0;i<9;i++)
                      	{
                      	P2=a[i];
                      	delay(100);
                      	}
                      }
                      void hieu_ung_2c() // hieu ung 2 o port2	
                      {
                      	char i;
                      	unsigned char a[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
                      	
                      	for(i=0;i<9;i++)
                      	{
                      	P3=a[i];
                      	delay(100);
                      	}
                      }
                      void hieu_ung_2d() // hieu ung 2 o port3 SAI THUAN KIM DONG HO PORT 2 3 NGUOC LAI
                      {
                      	unsigned char i;
                      	unsigned char a[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
                      	
                      	for(i=0;i<9;i++)
                      	{
                      	P1=a[i];
                      	delay(100);
                      	}
                      }
                      												
                      //*********************************Sang dan het cac bong theo chieu kim dong ho

                      Comment


                      • Nguyên văn bởi phucan2104 Xem bài viết
                        mình xin góp chút cho topic, tích cực mức 0 la led sáng

                        Cái file của bạn chạy cũng hay, nhưng kích thước file hex tới 6kb làm sao nạp vào 89 được?
                        Với lại cho mình hỏi chút : Bạn có viết được code chạy kiểu "ném" từng ký tự từ trái qua phải ( hoặc từ phải qua trái) không? nghĩa là từng ký tự một xuất hiện ở đầu dòng, chạy dần sang một bên, sau đó sáng luôn đợi các ký tự khác lần lượt chạy như vậy,nếu viết được share mình với, kiểu như này nè:
                        Chán ko buồn ký.

                        Comment


                        • Nguyên văn bởi tho hoc viec Xem bài viết



                          Cái file của bạn chạy cũng hay, nhưng kích thước file hex tới 6kb làm sao nạp vào 89 được?
                          Với lại cho mình hỏi chút : Bạn có viết được code chạy kiểu "ném" từng ký tự từ trái qua phải ( hoặc từ phải qua trái) không? nghĩa là từng ký tự một xuất hiện ở đầu dòng, chạy dần sang một bên, sau đó sáng luôn đợi các ký tự khác lần lượt chạy như vậy,nếu viết được share mình với, kiểu như này nè:
                          con 8952 có 8k bộ nhớ
                          ĐT: 0972 20 58 68
                          Gmail:

                          Comment


                          • Nguyên văn bởi tho hoc viec Xem bài viết



                            Cái file của bạn chạy cũng hay, nhưng kích thước file hex tới 6kb làm sao nạp vào 89 được?
                            Với lại cho mình hỏi chút : Bạn có viết được code chạy kiểu "ném" từng ký tự từ trái qua phải ( hoặc từ phải qua trái) không? nghĩa là từng ký tự một xuất hiện ở đầu dòng, chạy dần sang một bên, sau đó sáng luôn đợi các ký tự khác lần lượt chạy như vậy,nếu viết được share mình với, kiểu như này nè:
                            Có phải kiểu nay ko bạn?
                            Attached Files

                            Comment


                            • Nguyên văn bởi PDEL Xem bài viết
                              Có phải kiểu nay ko bạn?

                              Ok, phải thank bạn, nhưng mình muốn chỉ giúp code asm của kiểu đó cơ! ( hơi tham)!
                              Vì mình muốn chạy thay đổi nhiều hiệu ứng, các hiệu ứng khác thì mình tự viết được rồi,
                              Mà cái file hex của bạn tới 20k lận, mình nghĩ phải có giải thuật hẳn hoi mới mong tiết kiệm bộ nhớ, còn cứ set với MOV thì không đủ chỗ.

                              P/S: không thích dùng ledimm vì file xuất ra cồng kềnh quá, với lại ngồi click chuột bôi led mỏi cả tay, không nhanh bằng viết code.
                              Chán ko buồn ký.

                              Comment


                              • Nguyên văn bởi tho hoc viec Xem bài viết
                                Ok, phải thank bạn, nhưng mình muốn chỉ giúp code asm của kiểu đó cơ! ( hơi tham)!
                                Vì mình muốn chạy thay đổi nhiều hiệu ứng, các hiệu ứng khác thì mình tự viết được rồi,

                                P/S: không thích dùng ledimm vì file xuất ra cồng kềnh quá, với lại ngồi click chuột bôi led mỏi cả tay, không nhanh bằng viết code.
                                gửi bác, có code ASM
                                Attached Files

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X