Thông báo

Collapse
No announcement yet.

[TUT] Lý thuyết về code LED sao băng bằng ASM và KeilC cho 8051

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #91
    nhờ các bác giúp em một chút nào
    Lý Thuyết Và Thực Hành
    Là Hai Đường Thẳng Song Song

    Comment


    • #92
      anh ơi fiai thích dùm em câu lệnh này với ak em cảm ơn ak
      led =(pwm_c>num_pwm)?1:0;

      Comment


      • #93
        led =(pwm_c>num_pwm)?1:0;

        if(pwm_c>num_pwm) led=1;
        else led=0;

        Email:
        Tel: 0983.497.310

        Comment


        • #94
          các anh chị giúp e hoàn thành một mạch hiển thị một dãy số 131250512105 trên LCD và chương trình viết bằng ngôn ngữ c dược không ạ.E xin cảm ơn

          Comment


          • #95
            Nguyên văn bởi tienhuypro Xem bài viết
            Còn nợ các bác cái code ASM, hy vọng sẽ có trong năm mới này. Hoặc ai giúp cái, tui sẽ hỗ trợ chỉnh sửa cho!
            21.01.2014 Xin hồn @@

            Comment


            • #96
              Nguyên văn bởi tienhuypro Xem bài viết
              void main(){
              TMOD=0x10; /*timer 1 16bit*/
              TR1=1;
              TH1=0xFE;
              TL1=0xB3;
              IE=0x88; /*Ket thuc khoi dong timer1*/

              P0 = 0;
              delay_ms(3000);
              full_color1();
              while(1){
              full_color2();
              }
              }


              [/CODE]
              cái đoạn delay _ms (3000) để làm gì vây anh???

              Comment


              • #97
                Nguyên văn bởi annapana Xem bài viết
                cái đoạn delay _ms (3000) để làm gì vây anh???
                vậy xin hỏi bạn delay là gì đã?

                Comment


                • #98
                  Cho em lót dép ở đây để học hỏi
                  Lý Thuyết Và Thực Hành
                  Là Hai Đường Thẳng Song Song

                  Comment


                  • #99
                    Tình hình là e đang làm đồ án môn học VXL
                    Đề tài là dùng 89s52 sửa dụng 14 cổng chớp led trong đó có 12 cổng chớp theo kiểu sao băng còn 2 cổng còn lại chớp luân phiên.

                    Đầu tiên là quét sao băng 12 cổng và sáng cổng thứ 13
                    Kế tiếp là quét sao băng 12 cổng và sáng cổng thứ 14
                    Lặp lại 6 lần như thế
                    Tiếp là quét sao băng 12 cổng và giữa sáng chớp luân phiên 13 , 14 chớp 20 lần
                    Xong quay lại từ đầu

                    Xung delay là lấy từ ic 555.

                    code của e mà e dịch ra mô phỏng nó ko có chạy a

                    /*Thach anh su dung f=24Mhz*/
                    #include "regx52.h"

                    typedef unsigned char uchar;
                    typedef unsigned int uint;

                    sbit c1=P2^0;
                    sbit c2=P2^1;
                    sbit c3=P2^2;
                    sbit c4=P2^3;
                    sbit c5=P2^4;
                    sbit c6=P2^5;
                    sbit c7=P2^6;
                    sbit c8=P2^7;
                    sbit c9=P0^7;
                    sbit c10=P0^6;
                    sbit c11=P0^5;
                    sbit c12=P0^4;
                    /*
                    sbit c13=P2^3;
                    sbit c14=P2^2;
                    sbit c15=P2^1;
                    sbit c16=P2^0;
                    sbit c17=P3^7;
                    sbit c18=P3^6;
                    sbit c19=P3^5;
                    sbit c20=P3^4;
                    sbit c21=P3^3;
                    sbit c22=P3^2;
                    sbit c23=P3^1;
                    sbit c24=P3^0;
                    sbit c25=P1^7;
                    sbit c26=P1^6;
                    sbit c27=P1^5;
                    sbit c28=P1^4;
                    sbit c29=P1^3;
                    sbit c30=P1^2;
                    sbit c31=P1^1;
                    sbit c32=P1^0;
                    */
                    uchar num_pwm;
                    uchar pwm_c[32];
                    uint delay_in_t1;
                    void isr_timer1() interrupt 3 using 2{
                    TH1=0xFD; /* -24000000/12/60/50 ~= -666 ->0xFD66 (50 nghia la 50 muc sang)*/
                    TL1=0x66; /* chu ky ngat timer1 T=(666/2)us --> T*3 = 999 us ~= 1ms*/

                    c1=(pwm_c[0]>num_pwm)?1:0;
                    c2=(pwm_c[1]>num_pwm)?1:0;
                    c3=(pwm_c[2]>num_pwm)?1:0;
                    c4=(pwm_c[3]>num_pwm)?1:0;
                    c5=(pwm_c[4]>num_pwm)?1:0;
                    c6=(pwm_c[5]>num_pwm)?1:0;
                    c7=(pwm_c[6]>num_pwm)?1:0;
                    c8=(pwm_c[7]>num_pwm)?1:0;
                    c9=(pwm_c[8]>num_pwm)?1:0;
                    c10=(pwm_c[9]>num_pwm)?1:0;
                    c11=(pwm_c[10]>num_pwm)?1:0;
                    c12=(pwm_c[11]>num_pwm)?1:0;
                    /*
                    c13=(pwm_c[12]>num_pwm)?1:0;
                    c14=(pwm_c[13]>num_pwm)?1:0;
                    c15=(pwm_c[14]>num_pwm)?1:0;
                    c16=(pwm_c[15]>num_pwm)?1:0;
                    c17=(pwm_c[16]>num_pwm)?1:0;
                    c18=(pwm_c[17]>num_pwm)?1:0;
                    c19=(pwm_c[18]>num_pwm)?1:0;
                    c20=(pwm_c[19]>num_pwm)?1:0;
                    c21=(pwm_c[20]>num_pwm)?1:0;
                    c22=(pwm_c[21]>num_pwm)?1:0;
                    c23=(pwm_c[22]>num_pwm)?1:0;
                    c24=(pwm_c[23]>num_pwm)?1:0;
                    c25=(pwm_c[24]>num_pwm)?1:0;
                    c26=(pwm_c[25]>num_pwm)?1:0;
                    c27=(pwm_c[26]>num_pwm)?1:0;
                    c28=(pwm_c[27]>num_pwm)?1:0;
                    c29=(pwm_c[28]>num_pwm)?1:0;
                    c30=(pwm_c[29]>num_pwm)?1:0;
                    c31=(pwm_c[30]>num_pwm)?1:0;
                    c32=(pwm_c[31]>num_pwm)?1:0;
                    */
                    if(++num_pwm==100){
                    num_pwm=0;
                    }
                    ++delay_in_t1;
                    }
                    /*
                    void delay_ms(uint time)
                    {
                    delay_in_t1 = 0;
                    while(delay_in_t1 <= time*3);
                    }
                    */
                    void delay()////delay xung 555///////
                    {
                    while(!P3_5);
                    while(P3_5);
                    }

                    void main(){
                    TMOD=0x10; /*timer 1 16bit*/
                    TR1=1;
                    TH1=0xFD;
                    TL1=0x66;
                    IE=0x88; /*Ket thuc khoi dong timer1*/

                    P0 = 0;
                    P2 = 0;
                    delay_ms();
                    while(1){
                    }
                    }

                    Mấy a giúp e

                    Comment


                    • Ad nao cho e bit mạch với code đo dòng điện 1 chiều mới

                      Comment


                      • Alo ai cho e mạch do dog diện vs code mới

                        Comment


                        • mọi người giúp e với ạ đoạn code này của e sai chỗ nào vậy ạ e viết cho đồng hồ đếm dây
                          với em muốn viết code cho 2 con le đơn nháy cho nguồn thì viết thế nào ạ e cảm ơn



                          SECOND EQU 30H
                          TCOUNT EQU 31H
                          KCOUNT EQU 32H
                          KEY BIT P3.7
                          ORG 00H
                          SJMP START
                          ORG 0BH
                          LJMP INT_T0
                          START: MOV DPTR,#TABLE
                          MOV P0,#3FH
                          MOV P2,#3FH ;Start, digital display, &quot;00&quot;
                          MOV SECOND,#00H
                          MOV TCOUNT,#00H
                          MOV KCOUNT,#00H
                          MOV TMOD,#01H ;Timer 0 is in Mode 1
                          MOV TL0,#(65536-50000)/256
                          MOV TH0,#(65536-50000) MOD 256
                          K1: JB KEY,$ ;Wait for key
                          LCALL DELAY
                          JB KEY,$
                          MOV A,KCOUNT
                          CJNE A,#00H,K2 ;Determine the number keys
                          SETB TR0 ;1st button, start timer
                          MOV IE,#82H
                          JNB KEY,$
                          INC KCOUNT ;Button up, button clicks value plus 1
                          LJMP K1
                          K2: CJNE A,#01H,K3
                          CLR TR0 ;2nd key, turn off timer
                          MOV IE,#00H
                          JNB KEY,$
                          INC KCOUNT ;Button up, button clicks value plus 1
                          LJMP K1
                          K3: CJNE A,#02H,K1 ;The 3rd button, return to initial state
                          JNB KEY,$
                          LJMP START
                          INT_T0: MOV TH0,#(65536-50000)/256
                          MOV TL0,#(65536-50000) MOD 256
                          INC TCOUNT
                          MOV A,TCOUNT
                          CJNE A,#2,I2 ;0.1 seconds is enough to account
                          MOV TCOUNT,#00H
                          INC SECOND
                          MOV A,SECOND
                          CJNE A,#100,I1 ;10 seconds is enough to account
                          MOV SECOND,#00H
                          I1: MOV A,SECOND
                          MOV B,#10
                          DIV AB
                          MOVC A,@A+DPTR ;Show time
                          MOV P0,A
                          MOV A,B
                          MOVC A,@A+DPTR
                          MOV P2,A
                          I2: RETI
                          TABLE: DB 3FH,06H,5BH,4FH,66H
                          DB 6DH,7DH,07H,7FH,6FH
                          DELAY: MOV R6,#20
                          D1: MOV R7,#250
                          DJNZ R7,$
                          DJNZ R6,D1
                          RET
                          END

                          Comment


                          • Xin hỏi ai có board xử lý nôi điện KUB để cho 1 board 0977273765



                            0977273765

                            Comment


                            • Mình thấy tiêu đề này hay quá chừng
                              Attached Files

                              Comment


                              • khi xảy ra ngắt timer mặc định phần cứng của 89 sẽ tự xóa cờ tràn ko cần phần mềm phải xóa. Ko nhất thiết phải xóa TR0 vì thời gian timer đếm là thời gian chết, chương trình có thể chạy trình phục vụ ngắt timer0 trong lúc timer0 đếm miễn là không ảnh hưởng tới lần tràn tiếp theo.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X