Thông báo

Collapse
No announcement yet.

Cần giúp đỡ về code đếm chẵn lẻ

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

  • Cần giúp đỡ về code đếm chẵn lẻ

    Tình hình e mới học về con 89c51, và em cũng tìm đc code điều khiển led 7 thanh, nhưng nó mới chỉ đếm được từ 0-9. Vậy em muốn xin các pro giúp đỡ e phần code chăn lẻ với ạ. Và liệu từ cái code này có thể biến thể thành đếm chẵn lẻ được ko ạ. Thạnks các bác trc ạ
    #include <REGX51.H>
    #define Q0 P1_0
    #define Q1 P1_1
    #define Q2 P1_2
    #define Q3 P1_3
    #define sang 1
    #define tat 0
    //========khai bao ham delay(tao ra do tre bang phan mem)
    void delay(unsigned int ms)
    {
    unsigned int i,j;
    for (i=0; i<ms; i++)
    { for (j=0; j<120; j++);

    }
    }
    //======== hien thi ra led 7 thanh
    void display(unsigned char number)
    {
    switch (number)
    {
    case 0:
    Q0=Q1=Q2=Q3=0;
    break;
    case 1:
    Q1=Q2=Q3=0;
    Q0=1;
    break;
    case 2:
    Q1=1;
    Q0=Q2=Q3=0;
    break;
    case 3:
    Q0=Q1=1;
    Q2=Q3=0;
    break;
    case 4:
    Q0=Q1=Q3=0;
    Q2=1;
    break;
    case 5:
    Q1=Q3=0;
    Q2=Q0=1;
    break;
    case 6:
    Q3=Q0=0;
    Q2=Q1=1;
    break;
    case 7:
    Q3=0;
    Q0=Q1=Q2=1;
    break;
    case 8:
    Q3=1;
    Q0=Q1=Q2=0;
    break;
    case 9:
    Q3=Q0=1;
    Q1=Q2=0;
    break;
    default:Q0=Q1=Q2=Q3=0;break;
    }
    }
    main ()
    {
    unsigned char m;
    while(1)
    {
    for (m=0;m<10;m++)
    { display(m);delay(1000);}
    }
    }

  • #2
    mình biết của asm.

    Comment


    • #3
      em mới bắt đàu bài học vỡ lòng với code c thôi bác à

      Comment


      • #4
        neu asm thi day :

        led0 equ p0
        led1 equ p2
        org 00h
        mov dptr,#ma_7seg_ac
        mov r0,#0
        main:
        call hienthi
        call delay
        call tang
        jmp main
        hienthi:
        mov a,r0
        mov b,#10
        div ab
        movc a,@a+dptr
        mov led1,a
        mov a,b
        movc a,@a+dptr
        mov led0,a
        tang:
        inc r0
        cjne r0,#100,nhan1
        mov r0,#0
        nhan1:
        ret

        ;===========chuong trinh tre
        delay: mov r5,#255
        delay1: mov r6,#255
        delay2: mov r7,#1
        djnz R7,$
        djnz r6,delay2
        djnz r5,delay1
        ret
        ma_7seg_ac: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
        end

        Comment


        • #5
          Đếm chẵn lẻ ntn?

          Comment


          • #6
            Nguyên văn bởi sai.vn Xem bài viết
            Đếm chẵn lẻ ntn?
            ý e là từ code đó biến thể thành đếm chẵn hoặc đếm lẻ a ak

            Comment


            • #7
              thanks bác tehacxeng nhé, nhưng e ngờ u cái asm quá

              Comment


              • #8
                rat de neu ban muon dem nhu binh thuong thi chi can them chu ret , de ket thuc chuong trinh con ban them vao truoc chu <tang:> con muon den so lon hon cu noi , minh viet cho

                Comment


                • #9
                  nhìn code thiệt là vật vã
                  Code:
                  main(){
                  unsigned char i;
                  while(1){
                  for(i=0;i<=10;i+=1){// đếm chẵn thì i+=2
                  P1=i;
                  delay(1000);
                  }
                  }
                  }

                  Comment


                  • #10
                    minh viet theo kieu mang

                    Comment


                    • #11
                      Nguyên văn bởi chung1608 Xem bài viết
                      nhìn code thiệt là vật vã
                      Code:
                      main(){
                      unsigned char i;
                      while(1){
                      for(i=0;i<=10;i+=1){// đếm chẵn thì i+=2
                      P1=i;
                      delay(1000);
                      }
                      }
                      }
                      nó báo lỗi bác ơi, e thay phần
                      main ()
                      {
                      unsigned char m;
                      while(1)
                      {
                      for (m=0;m<10;m++)
                      { display(m);delay(1000);}
                      }
                      }
                      của e = của bác nhưng nó báo lỗi

                      Comment


                      • #12
                        Nguyên văn bởi tehacxeng Xem bài viết
                        rat de neu ban muon dem nhu binh thuong thi chi can them chu ret , de ket thuc chuong trinh con ban them vao truoc chu <tang:> con muon den so lon hon cu noi , minh viet cho
                        nhưng liệu viết = c được ko bác, e đang muốn ct = c

                        Comment


                        • #13
                          ban bien dich bang phan mem nao ! minh dung mide , chuong trinh cua minh viet ban chi can copy va bien dich bang phan mem mide la chay ngay ma minh da test roi ma!

                          Comment


                          • #14
                            vi chuong trinh cua minh viet theo dang mang ! nen don gian ban muon chan hay le thi chii can thay doan code o cuoi chuong trinh
                            (ma_7seg_ac: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h)

                            Comment


                            • #15
                              Nguyên văn bởi nh0k Xem bài viết
                              nhưng liệu viết = c được ko bác, e đang muốn ct = c
                              code của bạn đây. chú ý khi viết thì các lệnh trong case cần có { mở ngoặc đóng ngoặc này nhé }. đồng thời các câu lệng trong { }
                              cần được đẩy vào một tab nhé. với lại cái này của bạn mới chỉ có xuất ra các chân thôi chứ có hiển thị được led 7 đoạn đâu
                              Code:
                              #include <REGX51.H>
                              #define Q0 P1_0
                              #define Q1 P1_1
                              #define Q2 P1_2
                              #define Q3 P1_3
                              #define sang 1
                              #define tat 0
                              //========khai bao ham delay(tao ra do tre bang phan mem)
                              void delay(unsigned int ms)
                              { 
                              	unsigned int i,j;
                              	for (i=0; i<ms; i++)
                              	{ 
                              		for (j=0; j<120; j++); 
                              	}
                              }
                              //======== hien thi ra led 7 thanh
                              void display(unsigned char number)
                              {
                              	switch (number)
                              	{ 
                              		case 0:
                              		{	Q0=Q1=Q2=Q3=0;
                              			break;
                              		}
                              		case 1:
                              		{
                              			Q1=Q2=Q3=0;
                              			Q0=1;
                              			break;
                              		}
                              		case 2:
                              		{
                              			Q1=1;
                              			Q0=Q2=Q3=0;
                              			break;
                              		}
                              		case 3:
                              		{	Q0=Q1=1;
                              			Q2=Q3=0;
                              			break;
                              		}
                              		case 4:
                              		{	Q0=Q1=Q3=0;
                              			Q2=1;
                              			break;
                              		}
                              		case 5:
                              		{	Q1=Q3=0;
                              			Q2=Q0=1;
                              			break;
                              		}
                              		case 6:
                              		{
                              			Q3=Q0=0; 
                              			Q2=Q1=1;
                              			break;
                              		}
                              		case 7:
                              		{	Q3=0;
                              			Q0=Q1=Q2=1;
                              			break;
                              		}
                              		case 8:
                              		{	Q3=1;
                              			Q0=Q1=Q2=0;
                              			break;
                              		}
                              		case 9:
                              		{	Q3=Q0=1;
                              			Q1=Q2=0;
                              			break;
                              		}
                              		default:Q0=Q1=Q2=Q3=0;break;
                              	}
                              }
                              main ()
                              {
                              	unsigned char m;
                              	while(1)
                              	{
                              		for (m=0;m<10;m=m+2)
                              		{ 
                              			display(m);
                              			delay(1000);
                              		}
                              	}
                              }
                              chỉ có tâm hồn là nơi duy nhất: có thể biến thiên đường thành địa ngục và ngược lại có thể biến địa ngục hóa thiên đường
                              Everything should be made as simple as possible, but not simpler

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X