SOGO論壇
  登入   註冊   找回密碼
查看: 984|回覆: 2
列印 上一主題 下一主題

[問題求助] 求知 程式中文化 有錯沒有中文幫修正 [複製連結]

Rank: 3Rank: 3

狀態︰ 離線
跳轉到指定樓層
1
發表於 2013-10-13 16:14:44 |只看該作者 |倒序瀏覽
#include "reg51.h"       
#define COLS 16/*每個字16行*/
#define ROWS 2/*每行2個位元組*/
#define NUMS 7/*7個中文字數*/
void delay(unsigned int);/*移位速度控制延遲函數*/
char ScanLine=0;/* 行掃描信號*/
char i=0;/*行資料指標*/
char j;/* 列資料指標*/
char k=COLS;/*下一個中文字的第0行位置*/
sbit ctrls=0x96;/*74154智能*/
sbit P1_4=0x94; /*8051接腳定義*/
sbit P1_5=0x95; /*8051接腳定義*/
unsigned char *ptr1[COLS];
unsigned char *ptrn[COLS];
unsigned char code pattern[COLS*NUMS][ROWS]=
        {
0xff~略~0xff
};        
main()
{
  void ShiftLeft(void); /*左移函數原型宣告*/
  char i;
  IE=0x82;        /*致能計時器0中斷*/
  TMOD=0x01; /*設定計時器0工作於模式1*/
  TH0=(65536-1000)/256; /*計時器0初值 */
  TL0=(65536-1000)%256;
  P1_4=0; /*除能第一個74373*/
  P1_5=0; /*除能第二個74373*/
  TR0=1; /*啟動計時器0*/
        for(i=0;i<COLS;i++)/*ptr1指標指向第1個字元*/
    *(ptr1+i)=*(pattern+i);       
  while(1)
    {
       for(i=0;i<COLS;i++)/*ptr1指標指向下1個字元*/
         *(ptrn+i)=*(pattern+i+k);        
       for(i=0;i<COLS;i++)/*左移位16次*/
                 {
           delay(20000);/*延遲*/
           ShiftLeft();/*左移位1行*/
         }       
       k=k+COLS;        /*K指向下一個字元起始行號*/
       if(k==(COLS)*7)/*以顯示完7個字?*/
                         k=0;       
    }                           
}
void ShiftLeft(void)
  {
                char i;
    char *temp;
    TR0=0;
    temp=*ptrn;
    for(i=0;i<COLS-1;i++)/*左移1行*/
      {
        *(ptr1+i)=*(ptr1+i+1);
        *(ptrn+i)=*(ptrn+i+1);
      }
    *(ptr1+COLS-1)=temp;
    TR0=1;
  }

void T0_int(void) interrupt 1  /*計時器0中斷*/
{
        TH0=(65536-1000)/256;/*重設計十時初值*/
  TL0=(65536-1000)%256;
        ctrls=1; /*開啟74154 G2智能*/
        j=0;/*第0列*/
  P2=*(*(ptr1+i)+j); /*輸出第一位元組字型資料*/
        P1_4=1; /*閂鎖*/
        P1_4=0;
        j++;
        P2=*(*(ptr1+i)+j); /*輸出第2位元組字型資料*/
        P1_5=1; /*閂鎖*/
        P1_5=0;
        P1=ScanLine; /*輸出行掃描信號*/
        ctrls=0; /*關閉74154 G2智能*/
        ScanLine++;        /*掃描下一行*/
        i++;/*指向下一行字型資料*/
        if(ScanLine==16) /*已掃描完16行*/
          {
            ScanLine=0; /*重設掃描信號*/
            i=0; /*重設行資料指標*/
          }               
}       
void delay(unsigned int count) /*延遲函數*/
{
  int i;
  for(i=0;i<count;i++)
                ;
}
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 4

數位軟體勳章

狀態︰ 離線
2
發表於 2013-10-14 07:19:43 |只看該作者
#include "reg51.h"
sbit P1_4=0x94;       /*8051接腳定義*/
sbit P1_5=0x95;       /*8051接腳定義*/

建議改寫:  #include <at89x52.h>
就可以直接使用   P1_4  和  P1_5  不必再經過宣告的手續了
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 1 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 1   查看全部評分

Rank: 3Rank: 3

狀態︰ 離線
3
發表於 2013-10-14 17:41:10 |只看該作者
if8051 發表於 2013-10-14 07:19  
#include "reg51.h"
sbit P1_4=0x94;       /*8051接腳定義*/
sbit P1_5=0x95;       /*8051接腳定義*/

謝謝你的教導
那其他部份的程式中文化有錯還是要修改的呢?
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-31 02:00

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部