久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2798|回復: 7
收起左側

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

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

#define uchar unsigned char
#define uint  unsigned int

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

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

//中斷服務特殊功能寄存器配置

void time0init()
{
        
        TMOD |= 0x21;  //定時器16為計數工作模式
        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 ;//設置波特率9600
        
}

//定時器0中斷服務程序  做數碼管動態掃描,不用軟件延時
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;        //關閉位選
        
                P0 = 0xff; //清除斷碼
                du = 1;        //打開段選
                P0 = leddata[num[ i]];
                du = 0;        //關閉段選
                i++;//顯示下一位
        }
        else
        {
                i = 0;
        }

}


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

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

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

蟹蟹你們!!他亮了哈哈哈
回復

使用道具 舉報

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

有點像找不同哈哈哈,謝謝你們
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中国一级特黄毛片大片 | 91九色视频 | 国产精品99久久久久久www | 精品国产成人 | 久热国产精品视频 | 国产成年人小视频 | 中文字幕一区二区三区精彩视频 | 91久色| 久久久久久久久99精品 | 欧美久久久| 亚洲一区二区免费看 | 国产伦精品一区二区三区精品视频 | 日韩中文字幕视频在线 | 欧美黑人激情 | 亚洲一区不卡 | 色婷婷国产精品 | 亚洲综合在线一区 | 97中文视频 | 欧美精品一区二区三区一线天视频 | 中文字幕av免费 | 亚洲精品一区中文字幕乱码 | 久色视频在线观看 | 国产精品久久国产精品 | 99精品免费在线观看 | 婷婷精品 | 国产精品视频在线播放 | 中文字幕亚洲一区 | 国产成人免费视频网站视频社区 | 91porn在线 | aaaa日韩| 九九热精品视频 | 国产高清精品一区二区三区 | 国产成人精品区一区二区不卡 | 亚洲精品不卡 | 亚洲男人天堂2024 | 中文字幕一区二区三区不卡 | 天天躁日日躁狠狠躁2018小说 | 中文字幕视频在线看5 | 国产黄色av网站 | 丝袜美腿av | 成人一区二区三区在线观看 |