这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 早上好,調試鍵盤程序出錯?但不知道為什麼,請大家幫忙.

共2条 1/1 1 跳转至

早上好,調試鍵盤程序出錯?但不知道為什麼,請大家幫忙.

院士
2006-09-17 18:14:16     打赏
早上好,調試鍵盤程序出錯?但不知道為什麼,請大家幫忙.



关键词: 上好     調試     鍵盤     程序     出錯     不知道     為什     大家         

院士
2006-12-22 22:43:00     打赏
2楼
问 大家早上好,昨天我把ADS裝在了C盤下,終於可以仿真了,我的燈循環程序終於通過方真了,可是我的鍵盤用單步執行都沒有反應啊,我實在找不出在哪裡有錯了,現在我把程序貼出來,請大家幫忙分析一下,會出錯在哪裡?
   void Main(void)
{
    rPUPG=0x00;// Permit pull_up register
    rPCONG=0x00; //GPG IS Input
    rPUPC=0xffffffff; // Output,forbit pull_up register
    rPCONC=0x55555555; // GPC Are All Output
    rPDATC=0xffffffff; // all I/O Are high
   while(1)
    {   
      if(rPDATG==0xef) // GPG4 is low
             {rPDATC=led0;} // light the LED0
        
      if(rPDATG==0xdf) // GPG5 is low
             {rPDATC=led1;} // light the LED1
        
      if(rPDATG==0xbf)  // GPG6 is low
             {rPDATC=led2;} // light the LED2
    }
  }
   我在線上等. 1: 什么型号的? 2: 不好意思,忘了說硬件是3sc44b0x的,3個燈接在C口的第2.3.4腳上,鍵盤接在G口的第4.5.6口上.鍵盤低電平有效. 3: 請大家幫我看看,分析一下吧,小生實在是想不出為什麼了? 4: 大哥們,幫我看看嗎,我實在搞不定啊,我找不出錯誤啊
  大家幫幫忙吧,拜託了!!!!! 5: RP与速度有关没有, 6: 你指的是什麼速度呢?如過是按鍵的速度的話,我是一直按下的,都沒有反應,如果說是mcu的速度的話那是肯定夠的,請問還有什麼原因呢? 7: 试试:把某一脚直接一直拉低是什么反应? 8: 那我沒有試過
  硬件是沒有問題的,我用板子帶的鍵盤測試程序都是沒有問題,說明就不是板子的問題.
  我查我的程序都有1個星期了,我都要崩潰了,查不出哪裡有錯誤產生 9: 可能是程序有问题不知道你的GPG0~3是怎么接的,但是你都配置的输入,那么你应该屏蔽掉GP0~3,稍加修改:
      if((rPDATG|0x0f)==0xef) // GPG4 is low
             {rPDATC=led0;} // light the LED0 10: 硬件没问题只能是软件的问题楼上说的有道理。软件的问题可能就在于。。。看看编译后的汇编程序是不是对的。 11: 有可能0~3的影響,晚上我回去試試,你看一下下面的有可能的,對了,如果我剛開始把它定義為輸出,然後都給高,然後再定義為輸入,這樣可以嗎,看下面程序;

void Main(void)
{
    rPCONG=0x55;
    rPUPG=0xff;
    rPDATG=0xff;

   // rPDATG=0xff; //all I/O Are High
    rPUPG=0x00;// Permit pull_up register
   rPCONG=0x00; //GPG IS Input
   
   rPUPC=0xffffffff; // Output,forbit pull_up register
   rPCONC=0x55555555; // GPC Are All Output
   rPDATC=0xffffffff; // all I/O Are high
  
   while(1)
    {  if(rPDATG!=0xff)
          { delay100ms();
           if(rPDATG!=0xff)
             { if(rPDATG==0xef) // GPG4 is low
                 {rPDATC=led0;} // light the LED0
        
               if(rPDATG==0xdf) // GPG5 is low
                 {rPDATC=led1;} // light the LED1
        
               if(rPDATG==0xbf)  // GPG6 is low
                 {rPDATC=led2;} // light the LED2
             }
       }
  }
    如果這樣,你認為可以嗎? 12: 你的方法我没有测试过GPIO是完全的IO,输入则读引脚,输出则写寄存器,所以可能不行哟。 13: 但是如果不行的話,那麼,...那麼當你要用的逐行掃描的時候該怎麼辦,一會要當作輸出,一會又要當作輸入,那這個問題要如何解決呢? 14: To:zhiwei請問那你用什麼方法的呢? 15: 不停地修改设置啊把IO设置成输出,而进行读操作,读取的数据肯定是无效的。
需要输入是设置输入,休要输出的时候设置成输出救可以了。 16: 對啊,我也是這麼想的就是要不停的對I/O進行設置,好麻煩啊,不像51一樣,可以直接用.
初次接觸ARM,很多都不懂,可否介紹一本書我學學,謝謝! 17: 看文档就可以了44b0资料在网上到处都是,书看看周立功的, 18: 周立功的是philips的,44b0是samsung的,有些區別
不過,我買了本"基於S3C44B0X嵌入式uCLinux系統原理及應用"
感覺還好了,只是它裡面寫的例子程序看的很費神,我認為它的程序多了不必要的語句.
對了,學習ARM一定要學會Linux嗎? 19: 搞定了,謝謝大家的幫助!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]