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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3002|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕11页 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 在线日韩中文字幕 | 一级aaaaaa毛片免费同男同女 | 欧美国产精品一区二区三区 | 天天操网| 成人在线免费看 | 国产精彩视频在线观看 | 国产欧美日韩一区二区三区在线观看 | av性色 | 国产精品高潮呻吟久久aⅴ码 | 国产剧情久久 | 五月婷婷在线视频 | 在线观看成人免费视频 | 久久久成人精品 | 午夜电影合集 | 国产一在线观看 | 中国人pornoxxx麻豆 | 99久久婷婷国产综合精品电影 | 日本精a在线观看 | 操到爽 | 午夜免费视频 | 香蕉大人久久国产成人av | 色婷婷精品国产一区二区三区 | 涩涩视频在线观看 | 欧美精品久久久久 | 成人在线中文字幕 | 成人在线小视频 | 亚洲精品久久久久中文字幕欢迎你 | 日本一区视频在线观看 | 天天在线操 | 91国在线高清视频 | 亚洲国产高清免费 | 国产九九九 | 日日摸日日添日日躁av | 免费av观看 | 超碰成人av| 天堂资源最新在线 | 亚洲精品视频免费 | 完全免费av在线 | 国产一级在线视频 |