欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3544|回復(fù): 7
收起左側(cè)

求大佬指點:單片機編譯用數(shù)碼管顯示串口時,數(shù)碼管不亮,keil報了四個警告

[復(fù)制鏈接]
ID:628348 發(fā)表于 2019-10-22 17:54 | 顯示全部樓層 |閱讀模式
#include <reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint  unsigned int

sbit we = P2^7;        //位定義數(shù)碼管位選鎖存器接口
sbit du = P2^6;         //位定義數(shù)碼管位選鎖存器接口

uchar num1;
uchar i;//數(shù)碼管顯示位選變量
uchar num[] = {0, 0, 0, 0}; //百十個位,總數(shù)暫存數(shù)組
//數(shù)碼管0~9段選表
uchar code leddata[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
//數(shù)碼管1~3位選表
uchar code DPY[]={0xfe, 0xfd, 0xfb};

//中斷服務(wù)特殊功能寄存器配置

void time0init()
{
        
        TMOD |= 0x21;  //定時器16為計數(shù)工作模式
        TH0 =0xED;
        TL0 =0xFF; //5ms
        ET0 = 1; //開定時器0中斷
        TR0 = 1;//啟動定時器0

        EA = 1;        //開總中斷
}
//串口初始化
void UARTInit()
{
        EA = 1 ; //打開總中斷
        ES = 1 ; //打開串口中斷
        SM0 = 0 ; SM1 = 1 ;//串口工作方式1,8位UART波特率可變
        REN = 1 ; //串口允許接收
        TR1 = 1 ; //啟動定時器1
        TMOD |= 0x21 ; //定時器1工作模式2,8位自動重裝。用|=或等于,最終TMOD的值會等于上面的TMO和下面的相加,也就是TMOD = 0x21
        TH1 = 0xfd ;
        TL1 = 0xfd ;//設(shè)置波特率9600
        
}

//定時器0中斷服務(wù)程序  做數(shù)碼管動態(tài)掃描,不用軟件延時
void timer0() interrupt 1
{
        TH0 =0xED;
        TL0 =0xFF; //5ms  模式1非自動重裝需要手動重裝

         if(i < 3)
        {
                num[0] = num[3] / 100; //計算百位
                num[1] = num[3] % 100 / 10;        //計算十位
                num[2] = num[3] % 10;//計算個位
                P0 = 0xff; //清除斷碼
                we = 1;//打開位選
                P0 = DPY[ i];
                we = 0;        //關(guān)閉位選
        
                P0 = 0xff; //清除斷碼
                du = 1;        //打開段選
                P0 = leddata[num[ i]];
                du = 0;        //關(guān)閉段選
                i++;//顯示下一位
        }
        else
        {
                i = 0;
        }

}


void UART () interrupt 4
{
        if(RI)
        {
                num[3] = SBUF ; //把接收到的數(shù)據(jù)傳給num3
                RI = 0 ;//軟件清零接收標(biāo)志位
        }
               
}        

void main()
{
        time0init();//初始化定時器0
        UARTlnit();
        
        while(1) ;
}

main.c(99): warning C206: 'UARTlnit': missing function-prototype
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

求大佬指點ww

回復(fù)

使用道具 舉報

ID:235200 發(fā)表于 2019-10-22 18:28 | 顯示全部樓層
第1個警告是不存在UARTlnit這個子函數(shù),第2個警告是 UARTlnit沒有定義,真正的子函數(shù)UARTInit未被調(diào)用,只需要把調(diào)用函數(shù)名改正確就行了
回復(fù)

使用道具 舉報

ID:149144 發(fā)表于 2019-10-22 19:14 | 顯示全部樓層
void UARTInit();
放在最前面
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2019-10-22 19:22 | 顯示全部樓層
void UARTInit()  與  UARTlnit();不同名。

評分

參與人數(shù) 1黑幣 +8 收起 理由
楊雪飛 + 8 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

ID:628401 發(fā)表于 2019-10-22 19:44 | 顯示全部樓層
這是全部的程序嗎?怎么沒看到main函數(shù)呢,沒有main程序怎么沒有入口執(zhí)行不了的啊!另外串口初始化部分,我記得應(yīng)該是先設(shè)置參數(shù),然后才打開中斷和總中斷,順序是不是反了?
回復(fù)

使用道具 舉報

ID:97554 發(fā)表于 2019-10-22 22:19 | 顯示全部樓層
void main()
{
        time0init();//初始化定時器0
        UARTlnit();  -----------------  這里的UART   l  nit    而函數(shù)里邊是URRT I  nit   
        
        while(1) ;
}
回復(fù)

使用道具 舉報

ID:628348 發(fā)表于 2019-10-22 23:57 | 顯示全部樓層
csmyldl 發(fā)表于 2019-10-22 18:28
第1個警告是不存在UARTlnit這個子函數(shù),第2個警告是 UARTlnit沒有定義,真正的子函數(shù)UARTInit未被調(diào)用,只 ...

蟹蟹你們!!他亮了哈哈哈
回復(fù)

使用道具 舉報

ID:628348 發(fā)表于 2019-10-22 23:59 | 顯示全部樓層
楊雪飛 發(fā)表于 2019-10-22 22:19
void main()
{
        time0init();//初始化定時器0

有點像找不同哈哈哈,謝謝你們
回復(fù)

使用道具 舉報

9#
無效樓層,該帖已經(jīng)被刪除
10#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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