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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • nh0k
    Thành viên chính thức
    • Oct 2012
    • 46

    #1

    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);}
    }
    }
  • jqk1234
    Thành viên tích cực
    • Nov 2011
    • 194

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

    Comment

    • nh0k
      Thành viên chính thức
      • Oct 2012
      • 46

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

      Comment

      • tehacxeng
        Banned
        • Apr 2013
        • 56

        #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

        • sai.vn
          Thành viên mới
          • Mar 2011
          • 22

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

          Comment

          • nh0k
            Thành viên chính thức
            • Oct 2012
            • 46

            #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

            • nh0k
              Thành viên chính thức
              • Oct 2012
              • 46

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

              Comment

              • tehacxeng
                Banned
                • Apr 2013
                • 56

                #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

                • chung1608
                  Thành viên tích cực
                  • Sep 2009
                  • 4160

                  #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

                  • tehacxeng
                    Banned
                    • Apr 2013
                    • 56

                    #10
                    minh viet theo kieu mang

                    Comment

                    • nh0k
                      Thành viên chính thức
                      • Oct 2012
                      • 46

                      #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

                      • nh0k
                        Thành viên chính thức
                        • Oct 2012
                        • 46

                        #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

                        • tehacxeng
                          Banned
                          • Apr 2013
                          • 56

                          #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

                          • tehacxeng
                            Banned
                            • Apr 2013
                            • 56

                            #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

                            • daohuytien
                              Thành viên tích cực
                              • Mar 2008
                              • 440

                              #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...