找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1929|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

STC8G2k單片機(jī)IO口賦值編譯出錯(cuò)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
數(shù)碼管段不在同一組單片機(jī)IO口時(shí),增加函數(shù)來(lái)顯示時(shí)編譯出錯(cuò)。查不出那里錯(cuò)請(qǐng)各位大神幫忙看下錯(cuò)在哪。

#include    "config.h"
#include    "GPIO.h"
#include    "delay.h"


/*************    本地常量聲明    **************/
u8 code ledNum[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


sbit LED_DISP_A=P5^1;                                 
sbit LED_DISP_B=P3^3;                                 
sbit LED_DISP_C=P3^6;                                   
sbit LED_DISP_D=P4^2;                                    
sbit LED_DISP_E=P4^3;                                   
sbit LED_DISP_F=P5^0;                                 
sbit LED_DISP_G=P3^5;                                 
sbit LED_DISP_P=P4^1;                                   

sbit  LED_CS1 = P2^4;
sbit  LED_CS2  = P2^5;
sbit LED_CS3 = P2^6;

/******************** 數(shù)碼IO配置函數(shù) **************************/
void    GPIO_config(void)
{
    GPIO_InitTypeDef    GPIO_InitStructure;        //結(jié)構(gòu)定義
    GPIO_InitStructure.Pin  = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;        //指定要初始化的IO,
    GPIO_InitStructure.Mode = GPIO_OUT_PP;        //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_Inilize(GPIO_P2,&GPIO_InitStructure);    //初始化

    GPIO_InitStructure.Pin  = GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_6;        //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
    GPIO_InitStructure.Mode = GPIO_OUT_PP;        //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_Inilize(GPIO_P3,&GPIO_InitStructure);    //初始化

    GPIO_InitStructure.Pin  = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;        //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
    GPIO_InitStructure.Mode = GPIO_OUT_PP;        //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_Inilize(GPIO_P4,&GPIO_InitStructure);    //初始化

    GPIO_InitStructure.Pin  = GPIO_Pin_0|GPIO_Pin_1;        //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
    GPIO_InitStructure.Mode = GPIO_OUT_PP;        //指定IO的輸入或輸出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_Inilize(GPIO_P5,&GPIO_InitStructure);    //初始化
}


void led_display (void)
{
    u8 code data=0xf3;
   
    LED_DISP_E=data&0x01;
    data>>=1;
    LED_DISP_D=data&0x01;
    data>>=1;
    LED_DISP_C=data&0x01;
    data>>=1;
    LED_DISP_B=data&0x01;
    data>>=1;
    LED_DISP_A=data&0x01;
    data>>=1;
    LED_DISP_F=data&0x01;
    data>>=1;
    LED_DISP_G=data&0x01;
    data>>=1;
    LED_DISP_P=data&0x01;
}

/******************** 主函數(shù) **************************/
void main(void)
{
    GPIO_config();
   
    while(1)
    {
        led_display();
        delay_ms(1);
    }
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1079566 發(fā)表于 2023-9-4 20:05 | 只看該作者
是不是data不能使用, 因?yàn)閐ata,idata,xdata 好像在系統(tǒng)里已經(jīng)使用
回復(fù)

使用道具 舉報(bào)

板凳
ID:624769 發(fā)表于 2023-9-4 21:55 | 只看該作者
首先,定義 變量不能 用 “data” 來(lái)命名,一般多用“dat”
其次,你既然加了 code 關(guān)鍵字,那么這個(gè)就是常量了。常量是不能改寫的。所以  >>=  這個(gè)運(yùn)算是不能使用的。
所以一般會(huì)這么寫:void led_display (void)
{
    ACC  =0xf3;
    ACC  >>= 1;
    LED_DISP_E = CY;
    ACC  >>= 1;
    LED_DISP_D = CY;
    ACC  >>= 1;
    LED_DISP_C = CY;
    ACC  >>= 1;
    LED_DISP_B = CY;
    ACC  >>= 1;
    LED_DISP_A = CY;
    ACC  >>= 1;
    LED_DISP_F = CY;
    ACC  >>= 1;
    LED_DISP_G = CY;
    ACC  >>= 1;
    LED_DISP_P = CY;
}
回復(fù)

使用道具 舉報(bào)

地板
ID:320306 發(fā)表于 2023-9-5 10:58 | 只看該作者
STC官網(wǎng)有模板程序 建議用那個(gè)改!我也正在學(xué)STC8G!
回復(fù)

使用道具 舉報(bào)

5#
ID:1034262 發(fā)表于 2023-9-5 11:32 | 只看該作者
data是關(guān)鍵字,不能用作變量,改成dat吧。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表