RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Cần giúp đỡ ADC

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • kendevil
    Thành viên mới
    • Oct 2012
    • 6

    #1

    Cần giúp đỡ ADC

    mình viết code ADC hiển thị trên LCD mà khi biên dịch máy báo lỗi thiếu ";" mà tìm hoài chỗ đó ko thấy thiếu ";" nào.Mình có gửi file đính kèm,ae nào có thể biên dich ra file hex và chỉ ra lỗi giúp mình đc ko
    Attached Files
  • myth-coder
    Thành viên tích cực
    • Aug 2011
    • 303

    #2
    Bạn định đánh đố nhau à? Nếu bạn dùng keilc báo thiếu báo lỗi thì có chỉ số dòng ngay bên cạnh đó, nếu là trình biên dịch dạng comand line thì nó còn báo lỗi chi tiết hơn là có chỉ số dòng với chỉ số kỹ tự nữa cơ. Phải để ý báo lỗi chứ bạn vứt huỵch toẹt thế này thì có giời tìm được.

    Comment

    • myth-coder
      Thành viên tích cực
      • Aug 2011
      • 303

      #3
      PHP Code:
      #include<at89x51.h>
      //#include<THUVIEN_LCD16X2.C>
      #define ADD_A P1_0
      #define ADD_B P1_1
      #define ADD_C P1_2
      #define START P1_4
      #define ALE   P1_3
      #define RS    P1_5
      #define RW    P1_6
      #define W     P1_7
      #define DATA_LCD P0
      #define DATA_ADC P2
      
      unsigned int KQ7;
      unsigned char TR,CH,DV;/*Khai báo những thằng này thì không dùng đi dùng {TR,CH,DV}7*/
      code char HANG1[]=" DH SP KY THUAT";// Đặt cận cho mảng chỗ này làm gì? mà có nhất thiết phải để unsigned char ko?
      code char HANG2[]="NHIET DO DO:  ";// Có thể dùng từ khóa code thay cho const
      void delay();
      void ghilcd();
      void ghichuoi();
      void setup_lcd();
      void TS_GM();
      void HT_LCD();
      void CD_ADC();
      void docADC_7();
      
      void delay(unsigned int x)
      {
         unsigned int y;
         ;
         for(y=0;y<x;y++)
            ;
      }
      
      void TS_GM()
      {
         DV7=(KQ7%10)+0x30;
         CH7=(KQ7/10%10)+0x30;
         TR7=(KQ7/100)+0x30;
         if(TR7==0x30)
         {
            TR7=' ';
            if(CH7==0x30)
               CH7=' ';
         }
      }
      
      void ghilcd(bit chonRS, unsigned char DL_LCD)
      {
         DATA_LCD=DL_LCD;
         RS=chonRS;
         RW=0;
         E=1;
         E=0;
         delay(500);      
      }
      
      void HT_LCD()
      {
         ghilcd(0,0x80);
         ghilcd(1,TR7);
         ghilcd(1,CH7);
         ghilcd(1,DV7);
      }
      
      void ghichuoi(char *chuoi)
      {
         char ch;
         ;
         while((ch=*chuoi))
         {
            ghilcd(1,ch);
            chuoi++;
         }
      }
      
      void setup_lcd()
      {
         delay(10000);
         ghilcd(0,0x38);
         ghilcd(0,0x38);
         ghilcd(0,0x38);
      
         ghilcd(0x0C);// Ghi LCD nhận 2 tham số sao ở đây lại chỉ có 1?
         ghilcd(0x06);
         ghilcd(0x01);
      }
      
      void CD_ADC()
      {
         ALE=START=1;
         ALE=START=0;
         delay(500);
      }
      
      void docADC_7()
      {
         ADD_A=1;
         ADD_B=1;
         ADD_C=1;
         CD_ADC();
         KQ7=DATA_ADC;
      }
      
      void main()
      {
         ADD_A=1;
         ADD_B=1;
         ADD_C=1;
         while(1)
         {
            unsigned char i;
            ;
            KQ7=0;
            for(i=0;i<10;i++)
            {
               CD_ADC();
               delay(100);
               KQ7=KQ7+P2;
               KQ7=KQ7/10;
               TS_GM();
               HT_LCD();
               delay(1000);
            }
         }   
      } 
      
      Bạn để ý cái style khi viết 1 chút để cho dễ theo dõi. Cố gắng viết mỗi lệnh trên 1 dòng chứ đừng chen chúc nhau kiểu đó.

      Comment

      • kendevil
        Thành viên mới
        • Oct 2012
        • 6

        #4
        thanks bạn,mình đã sửa lại chỗ TR,CH,DV và hàm ghi lcd,những keil c báo lỗi *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

        Comment

        • kendevil
          Thành viên mới
          • Oct 2012
          • 6

          #5
          máy báo warning mình nghĩ mấy cái hàm con ADC lỗi,ko bik sửa sao đây
          Build target 'Target 1'
          compiling adc.c...
          linking...
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?_GHICHUOI?ADC
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?SETUP_LCD?ADC
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?PR?DOC_ADC_7?ADC
          *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
          SEGMENT: ?CO?ADC

          Comment

          • myth-coder
            Thành viên tích cực
            • Aug 2011
            • 303

            #6
            Chẳng sao cả đó chỉ là "cảnh báo" ý là nó nhắc nhở những hàm đó được đinh nghĩa nhưng không được sử dụng -> có nghĩa là bạn đang lãng phí rom của VSL có thế thôi. Mà chắc cái này đi thuê? thấy viết code cũng không dở lắm nhưng mà câu hỏi thì có vẻ chẳng đâu vào với đâu cả.

            Comment

            • kendevil
              Thành viên mới
              • Oct 2012
              • 6

              #7
              cái này học trên lớp viết lại chứ thuê mượn j đâu,

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...