音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

C51中定義變量遇到的奇怪問題

作者:iamlazydog 欄目:單片機
C51中定義變量遇到的奇怪問題
編程時遇到一個奇怪問題,如果按照如下方式定義變量
#include<reg51.h>
#define uCHAR unsigned CHAR

void main(void)
    {          
     SCON=0x50;     /*串行口初始化*/
     TMOD=0x20;    /*定時器T1作為波特率發(fā)生器, 設(shè)置T1工作模式2*/    
     TH1=0xfd;        /*波特率發(fā)生器為9600bps*/
     TL1=0xfd;
     PCON=0;          /*波特率及電源控制寄存器清0,SMOD為0*/
     TR1=1;           /*啟動定時器T1*/
     IE=0x00;         /*清中斷*/
     
     uCHAR i=0;    
     uCHAR code wave[40]={ 0x46,0x7C,0x58,0x00,    
        0x46,0x7B,0x90,0x00,
        0x46,0x7A,0xC8,0x00,
        0x46,0x7A,0x00,0x00,
         0x46,0x79,0x38,0x00,
        0x46,0x78,0x70,0x00,
        0x46,0x77,0xA8,0x00,
        0x46,0x76,0xE0,0x00,
        0x46,0x76,0x18,0x00,
        0x46,0x75,0x50,0x00};
    
     }

出現(xiàn)如下錯誤:
WHY.C(17): error C141: syntax error near 'unsigned'
WHY.C(17): error C202: 'i': undefined identifier
WHY.C(15): error C141: syntax error near 'unsigned'
WHY.C(15): error C202: 'wave': undefined identifier
WHY.C(15): error C141: syntax error near '{'
WHY.C(24): error C141: syntax error near '}'

但是如果把變量放前面定義,就沒有錯誤。
#include<reg51.h>
#define uCHAR unsigned CHAR

void main(void)
    {          
     uCHAR i=0;    
     uCHAR code wave[40]={ 0x46,0x7C,0x58,0x00,    
        0x46,0x7B,0x90,0x00,
        0x46,0x7A,0xC8,0x00,
        0x46,0x7A,0x00,0x00,
         0x46,0x79,0x38,0x00,
        0x46,0x78,0x70,0x00,
        0x46,0x77,0xA8,0x00,
        0x46,0x76,0xE0,0x00,
        0x46,0x76,0x18,0x00,
        0x46,0x75,0x50,0x00};

     SCON=0x50;       /*串行口初始化*/
     TMOD=0x20;       /*定時器T1作為波特率發(fā)生器, 設(shè)置T1工作模式為2*/    
     TH1=0xfd;        /*波特率發(fā)生器為9600bps*/
     TL1=0xfd;
     PCON=0;          /*波特率及電源控制寄存器清0,SMOD為0*/
     TR1=1;           /*啟動定時器T1*/
     IE=0x00;         /*清中斷*/
        
     }

為什么? 是不是定義必須放在最前面?不能像普通c那樣定義



* - 本貼最后修改時間:2006-3-14 8:59:18 修改者:iamlazydog

2樓: >>參與討論
computer00
普通的C,也不能放中間吧?
 
3樓: >>參與討論
xwj
呵呵,子程序的變量定義只能放在所有執(zhí)行語句之前
當(dāng)然,定義時可以順便賦值

* - 本貼最后修改時間:2006-3-14 0:16:58 修改者:xwj

4樓: >>參與討論
2shift
這是單片機的c語言,不是電腦的c++
 
5樓: >>參與討論
xzhenggen
修改一下:typedef uCHAR unsigned CHAR 也可以.
 
6樓: >>參與討論
wswh2o
好像極是這樣的
 
7樓: >>參與討論
iamlazydog
是不是把#define uCHAR unsigned CHAR換成
typedef uCHAR unsigned CHAR 

8樓: >>參與討論
ljxh401
c是不能放在執(zhí)行語句之間的
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
畫圖????
PHILIP的高速51單片機,用38400bps波特率,晶振選多大合適?
選一款符合要求的單片機
郁悶,誰用過max3110(SPI擴串口的芯片),怎么沒輸出?
我的單片機是3.3v的,可否直接接光耦tlp521輸入端
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號