Thông báo

Collapse
No announcement yet.

[Share-code] Mỗi ngày một bài tập về AT89S52

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

  • Nguyên văn bởi hanhkt1993
    Anh ơi đây là 1 chương trình c0n asm ( e k biết gì về lập trình cả mog a giúp e)
    CHIP3:;SANG DAN VONG

    MOV A,#0FFH
    LAPC:
    CLR C
    RRC A
    CALL DELAY
    MOV P0,A
    CJNE A,#00H,LAPC

    MOV A,#0FFH
    LAPC1:
    CLR C
    RRC A
    CALL DELAY
    MOV P2,A
    CJNE A,#00H,LAPC1

    MOV A,#0FFH
    LAPC2:
    CLR C
    RRC A
    CALL DELAY
    MOV P3,A
    CJNE A,#00H,LAPC2

    MOV A,#0FFH
    LAPC3:
    CLR C
    RRC A
    CALL DELAY
    MOV P1,A
    CJNE A,#00H,LAPC3
    RET
    theo e tìm hiểu thì led sẽ sáng dần từ trên port0 xuống port3 đồng thời sáng dần từ port2 lên port1 đúng k vậy anh?
    Nhưng nếu chỉ cho port3 và port1 sáng dần thì xem xoá port0 và port2 nthế đúng k? (xoá MOV A,#0FFH
    LAPC:
    CLR C
    RRC A
    CALL DELAY
    MOV P0,A
    CJNE A,#00H,LAPC

    MOV A,#0FFH
    LAPC1:
    CLR C
    RRC A
    CALL DELAY
    MOV P2,A
    CJNE A,#00H,LAPC1 )
    Bó tay. mình học C bạn ak!

    Comment


    • bạn ơi cho mình hỏi ý nghĩa của câu lệnh này tt=~tt; và tại sao bạn lại cho nó vào phần chống rung cho phím nhấn
      vì DIY mà học lại nhiều quá ợ! chết mất

      Comment


      • Nguyên văn bởi tanvp1992 Xem bài viết
        bạn ơi cho mình hỏi ý nghĩa của câu lệnh này tt=~tt; và tại sao bạn lại cho nó vào phần chống rung cho phím nhấn
        tt là viết tắt của trạng thái, khi nhấn vào nút thì sẽ lật trạng thái, và trong chương trình chính sẽ xử lí các trạng thái này. Ví dụ: nút start/stop , nhấn lần 1 chạy, lần 2 ngừng, chu kì lặp lại thì dùng cách này nhé!

        Comment


        • Bài tập 29

          Share một vài mạch trái tim mô phỏng
          TẢI VỀ: TRAI TIM.rar

          Comment


          • Bài tập 30

            Giao tiếp AT89S52 với máy tính chuẩn RS232. AT89S52 kết nối với bàn phím ma trận 4x4 và LCD hiển thị. Trên máy tính có chương trình để điều khiển VDK hiển thị chuỗi.
            Việc giao tiếp thực hiện theo 2 chiều, VDK gửi chuỗi lên máy tính, máy tính gửi chuỗi xuống VDK.
            Yêu cầu:
            -C# 2010
            -Proteus 7.8
            -Keil C 4
            - Virtual Serial Port Driver 6.9
            TẢI CODE VÀ FILE MÔ PHỎNG:
            NGUYENTHANHHAI-GIAOTIEPRS232.rar

            Comment


            • Anh có code điều khiển 60 led dùng 74HC595 không, code C
              Nhận vẽ mạch in ^_^
              TEL: 0167 4500 365
              Mail:

              Comment


              • chủ thớt có thể hướng dẫn e các quét led 7 bằng timer đc không?cho mình vd cụ thể nha...thanks a

                Comment


                • các pro xem giúp chương trình của e hiển thị led từ 00-99 mà sao mô phỏng trên proteus chẳng lên chỉ hiện 2 số 0 to đùng...mong các pro chỉgiùm lỗi.e mới học nên còn gà lắm có gì k phải mong các pro chỉ bảo..thanks all



                  #include <REGX52.H>

                  sbit led_1=P3^0;
                  sbit led_2=P3^1;
                  unsigned int i,j;
                  unsigned char dem,chuc,donvi;
                  unsigned char led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                  // ham tre
                  void delay(unsigned char time)
                  {
                  for(i=0;i<time;i++)
                  for(j=0;j<125;j++);
                  }
                  void main()
                  {
                  while(1)
                  { dem=0;
                  donvi=dem/10;
                  chuc=(dem%100)/10;

                  for(i=0;i<20;i++)
                  {
                  {
                  led_1=1;
                  P2=led7[donvi];
                  delay(10);
                  led_1=0;
                  P2=0xff;
                  led_2=1;
                  P2=led7[chuc];
                  delay(10);
                  led_2=0;
                  P2=0xff;
                  }

                  dem=dem+1;
                  if(dem==99)dem=0;
                  }
                  }
                  }

                  Comment


                  • Nguyên văn bởi anhommatroi Xem bài viết
                    các pro xem giúp chương trình của e hiển thị led từ 00-99 mà sao mô phỏng trên proteus chẳng lên chỉ hiện 2 số 0 to đùng...mong các pro chỉgiùm lỗi.e mới học nên còn gà lắm có gì k phải mong các pro chỉ bảo..thanks all



                    #include <REGX52.H>

                    sbit led_1=P3^0;
                    sbit led_2=P3^1;
                    unsigned int i,j;
                    unsigned char dem,chuc,donvi;
                    unsigned char led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                    // ham tre
                    void delay(unsigned char time)
                    {
                    for(i=0;i<time;i++)
                    for(j=0;j<125;j++);
                    }
                    void main()
                    {
                    while(1)
                    { dem=0;
                    donvi=dem/10;
                    chuc=(dem%100)/10;

                    for(i=0;i<20;i++)
                    {
                    {
                    led_1=1;
                    P2=led7[donvi];
                    delay(10);
                    led_1=0;
                    P2=0xff;
                    led_2=1;
                    P2=led7[chuc];
                    delay(10);
                    led_2=0;
                    P2=0xff;
                    }

                    dem=dem+1;
                    if(dem==99)dem=0;
                    }
                    }
                    }
                    trong hàm delay dùng biến i,và vòng lặp for cũng dùng biến i.
                    và một số chỗ cần sửa lại.
                    Code:
                    #include <REGX52.H>
                    
                    sbit led_1=P3^0;
                    sbit led_2=P3^1;
                    unsigned int i,j,t;
                    unsigned char dem,chuc,donvi;
                    unsigned char led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                    // ham tre
                    void delay(unsigned char time)
                    { 
                    for(i=0;i<time;i++)
                    for(j=0;j<125;j++); 
                    }	
                    void main()
                    { dem=0;
                    while(1)
                    {	 
                    for(t=0;t<20;t++){
                    chuc=dem/10;
                    donvi=dem%10;
                    led_1=1;
                    P2=led7[donvi];
                    delay(10);
                    led_1=0;
                    P2=0xff;
                    led_2=1;
                    P2=led7[chuc];
                    delay(10);
                    led_2=0;	
                    P2=0xff;
                    }	
                    dem=dem+1;
                    if(dem==99)dem=0;
                    }
                    }
                    Click image for larger version

Name:	dem.jpg
Views:	1
Size:	155.0 KB
ID:	1383419
                    |

                    Comment


                    • hi thanks a tdm nhiu nhé..mà tiện a cho e hỏi nếu mình dùng timer để quét như thế này có phức tạp hơn không?

                      Comment


                      • dùng timer đơn giản hơn nhiều bạn ạ.
                        Nguyễn Huy Biên - 01649 802 694
                        gmail :

                        Comment


                        • bạn có thể cho mình 1 ví dụ đơn giản dùng timer quét led 7 đc không...thanks nhiu

                          Comment


                          • Nguyên văn bởi anhommatroi Xem bài viết
                            bạn có thể cho mình 1 ví dụ đơn giản dùng timer quét led 7 đc không...thanks nhiu
                            trong topic này có đó bạn, chịu khó "đào mộ " lại nha!

                            Comment


                            • ủng hộ bạn 1 code cơ bản về RTX-Tiny (hệ điều hành thời gian thực)để các bạn tham khảo
                              Code:
                              #include <REGX51.H>
                              #include <rtx51tny.h>
                              sbit Led1 = P2^0;
                              sbit Led2 = P2^1;
                              #define Led_Statut P2_7
                              //sbit Led3 = P2^2;
                              //sbit Led4 = P2^3;
                              unsigned  char maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                              unsigned  char count;
                              unsigned  char i;
                              void quetled(unsigned char so)
                              {
                              	Led1 = 1;
                              	P3   = maled[so/10];
                              	os_wait (K_TMO, 5, 0);
                              	Led1 = 0;
                              	P3   = 0xff;
                              	
                              	Led2 = 1;
                              	P3   = maled[so%10];
                              	os_wait (K_TMO, 5, 0);
                              	Led2 = 0;
                              	P3   = 0xff;
                              }
                              job1() _task_ 0
                              {
                              		os_create_task (1);
                              		os_create_task (2);
                              		os_create_task (3);
                              		while(1)
                              		{
                              			quetled(count);
                              		}
                              
                              }
                              job2() _task_ 1
                              {
                              	while(1)
                              	{
                              		count ++;
                              		os_wait (K_TMO, 100, 0);
                              		if(count == 100)
                              		count = 0;
                              	}
                              }
                              job3() _task_ 2
                              {
                              	while(1)
                              	{
                              		Led_Statut = ! Led_Statut;
                              		os_wait (K_TMO, 50, 0);
                              	}
                              }
                              job4() _task_ 3
                              {	while(1)
                              	{
                              	P1 = 0xfe;
                              	os_wait (K_TMO, 100, 0);
                              	for(i=0;i<7;i++)
                              	{
                              		P1 = P1 << 1;
                              		os_wait (K_TMO, 100, 0);
                              	}
                              	P1 = 0xff;
                              	os_wait (K_TMO, 100, 0);
                               }
                              }
                              Nguyễn Huy Biên - 01649 802 694
                              gmail :

                              Comment


                              • Nguyên văn bởi bienhou Xem bài viết
                                ủng hộ bạn 1 code cơ bản về RTX-Tiny (hệ điều hành thời gian thực)để các bạn tham khảo
                                Code:
                                #include <REGX51.H>
                                #include <rtx51tny.h>
                                sbit Led1 = P2^0;
                                sbit Led2 = P2^1;
                                #define Led_Statut P2_7
                                //sbit Led3 = P2^2;
                                //sbit Led4 = P2^3;
                                unsigned  char maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                                unsigned  char count;
                                unsigned  char i;
                                void quetled(unsigned char so)
                                {
                                	Led1 = 1;
                                	P3   = maled[so/10];
                                	os_wait (K_TMO, 5, 0);
                                	Led1 = 0;
                                	P3   = 0xff;
                                	
                                	Led2 = 1;
                                	P3   = maled[so%10];
                                	os_wait (K_TMO, 5, 0);
                                	Led2 = 0;
                                	P3   = 0xff;
                                }
                                job1() _task_ 0
                                {
                                		os_create_task (1);
                                		os_create_task (2);
                                		os_create_task (3);
                                		while(1)
                                		{
                                			quetled(count);
                                		}
                                
                                }
                                job2() _task_ 1
                                {
                                	while(1)
                                	{
                                		count ++;
                                		os_wait (K_TMO, 100, 0);
                                		if(count == 100)
                                		count = 0;
                                	}
                                }
                                job3() _task_ 2
                                {
                                	while(1)
                                	{
                                		Led_Statut = ! Led_Statut;
                                		os_wait (K_TMO, 50, 0);
                                	}
                                }
                                job4() _task_ 3
                                {	while(1)
                                	{
                                	P1 = 0xfe;
                                	os_wait (K_TMO, 100, 0);
                                	for(i=0;i<7;i++)
                                	{
                                		P1 = P1 << 1;
                                		os_wait (K_TMO, 100, 0);
                                	}
                                	P1 = 0xff;
                                	os_wait (K_TMO, 100, 0);
                                 }
                                }
                                Rất cám ơn bạn đã chia sẽ, hy vọng bạn sẽ đóng góp cho topic này nhiều bài hay nữa, để mọi người cùng học tập. À. Nếu có file mô phỏng thì cho mình xin luôn nha.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                                  Hôm qua, 13:11
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                                  Hôm qua, 09:25
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                                  Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                                  Hôm qua, 09:10
                                • Ng.Phuong.5
                                  Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                                  bởi Ng.Phuong.5
                                  Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                                  Mấy con...
                                  09-01-2025, 19:44
                                • viettinh
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi viettinh
                                  Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                                  Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                                  09-01-2025, 18:12
                                • nguyendinhvan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi nguyendinhvan
                                  Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                                  Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                                  Cách đơn giản...
                                  09-01-2025, 00:04
                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                                  08-01-2025, 19:02
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                                  08-01-2025, 15:43
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                                  08-01-2025, 15:28
                                • mèomướp
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi mèomướp
                                  Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                                  08-01-2025, 11:44
                                Đang tải...
                                X