Thông báo

Collapse
No announcement yet.

Nhờ ACE giúp giùm câu này với.

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

  • Nhờ ACE giúp giùm câu này với.

    có bài tập ông thầy ra khó quá làm mấy cũng sai, ức chế quá. ai bít làm câu này xin giúp đỡ, file".asm" dùng để nạp vào protues. đề thế này: Thiết lập 2 led 70 đoạn ở p1, chân điều khiển ở p2.1, p2.2. Hãy viết chương trình đếm lên những số chia hết cho 3 từ 18 dến 30. Rồi đếm xuống những số chia hết cho 4, từ 32 xuống 20, delay 2s. XIn mọi người giúp đỡ . xin chân thành cảm ơn. làm cái này cả buiooir tối mà cũng ko xong.

  • #2
    Trời bài tập j lạ z, tôi k dùng ASM nhưng đại khái thì thấy cũng đâu có j.Tạo 1 mảng chứa mấy số từ 18->30 , mà chia hết cho 3, và tương tự với mảng kia rồi xuất dử liệu ra led 7 đoạn lần lượt các phần tử trong 2 mảng đó với delay 2s như trong đề là ok.

    Comment


    • #3
      là sao. bạn lam giùm mình với ko bít chút nào hết. làm cả tối rồi mà ko ra.

      Comment


      • #4
        Hết nói nổi với SV bi giờ không chịu hc mà cứ xin với làm giùm thôi , nếu k biết thì phải tìm hiểu chứ ai đi xin kiểu đó.
        Đã vậy thì tui sẽ viết cho cái sườn nhé ,còn vc chuyển qua ASM thế nào , và vc đối phó với ông thầy như thế nào là vc của u nhé.

        Code:
        // 89C51 nhé với Crytal 12Mhz.
        // tạo một cái timer nhé ở đây dùng timer0 làm delay 2s
        //tạo mấy cái biến toàn cục nhé
        unsigned char Timer0_Counter,Num;
        bit divide;
        
        unsigned char code 7seg[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};
        
        void Timer0() interrupt 1{     
           TR0=0; // stop timer 1
           Timer0_Counter++;
           if(Timer0_Counter>=40){Timer0_Counter=0;
             if(divide==0){
               if(Num<=30)Num+=3;
               else (Num>30){Num=32;divide=1;}
             }
             else {
               if(Num>=20)Num-=4;
               else (Num<20) {Num=18;divide=0;}      
             }
           }
           TH0=0x3C;//-(50000us)
           TL0=0xB0;
           TR0=1;//start timer 1
        }
        void delay(int t){
              while(t--);
        }
        void mani (){
        
              TMOD =0x01; //timer 0 in mode 1 16bit
              ET0=1;
              EA=1;
              TH0=0x3C;//-(50000us)
              TL0=0xB0;
              TR0=1;//start timer 1
              // đầu tiên là các số chia hết cho 3 từ 18->30 nhé
              Num=18;
              while(1){
              P2_1=1;P2_2=0;// cho led 1 sáng led 2 tắt
              P1=~7seg[Num/10]; // hàng chục vì tôi có dùng cổng not ở hardware, nên phải đảo lại nếu không có lắp cổng not ở  mô phỏng.
              delay(100);
              P2_1=0;P2_2=1;// cho led 2 sáng led 1 tắt
              P1=~7seg[Num%10];  // hàng đv vì tôi có dùng cổng not ở hardware, nên phải đảo lại nếu không có lắp cổng not ở  mô phỏng.   
               delay(100);
        }
        }
        Đến thế thôi nhé còn nếu thắc mắc ở đâu thì cứ hỏi.

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X