找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机数字电压表程序问题求分析

查看数: 2260 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-5-16 22:16

正文摘要:

想请教下这个到底是哪里的问题,我用51单片机头文件试过不对,用define uchar unsigned char

回复

ID:500743 发表于 2019-5-17 13:59
#include"intrins.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
uchar uc_Clock;
//定时器0中断计数
bit b_DATransform=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把电压显示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(uchar uiNumber)
{
        uchar ucaNumber[3],ucCount;
        if(uiNumber>999)                                       
                uiNumber=999;
        ucaNumber[0]=uiNumber/100;                                                                //把计算数字的每个位存入数组。
        ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;                                                       
        ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
        for(ucCount=0;ucCount<3;ucCount++)
        {
                vShowOneChar(ucaNumber[ucCount]+48);                                //从首位到末位逐一输出。
                if(ucCount==0)
                        vShowOneChar('.');
        }
}
//*************************************************************************************************
//*                                                                                                                                                                                                  *
//*                          ********************************主函数******************************                                  *
//*                                                                                                                                                                                                  *
//*************************************************************************************************


void main()
{
        TMOD=0x01;                        //定时器0,模式1。
        TH0=TIME0H;
        TL0=TIME0L;
        TR0=1;                                //启动定时器。
        ET0=1;                                //开定时器中断。
        EA=1;                                //开总中断
        vdInitialize();
        vWriteCMD(0x84);           //写入显示起始地址(第一行第4个位置)
        vShowChar("voltage");
        vWriteCMD(0xC9);     
        vShowChar("(V)");
        while(1)
        {
                if(b_DATransform==1)
                {
                        b_DATransform=0;
                        vWriteCMD(0xC4);
                        vShowVoltage(uiADTransform());
                }
        }
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0中断函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void t0() interrupt 1
{
        if(uc_Clock==0)
        {
                uc_Clock=5;
                b_DATransform=1;
        }
        else
                uc_Clock--;
        TH0=TIME0H;                   //恢复定时器0。
        TL0=TIME0L;
}这是程序
ID:500743 发表于 2019-5-17 13:58
改完报错还是出现missing“”;“before“*”如果是uc_Clock在后面就是beforen uc_Clock,要不然就是跳出一大堆错误
ID:500743 发表于 2019-5-17 13:53
51mcu 发表于 2019-5-17 07:14
把第一行的“*”号去掉。

file:///C:/Users/Administrator/Desktop/1.jpg   不行嗯
ID:511890 发表于 2019-5-17 12:39
星号后面加个空格,再不行,就分开写,先定义别名:typedef uchar* uc_Clock;然后在使用之前赋值。如在main最前面赋值:un_Clock=0;
ID:176854 发表于 2019-5-17 09:22
typedef 是给数据类型定义一个别名。
如果你只是定义一个指针uchar *uc_Clock = 0;即可
ID:34643 发表于 2019-5-17 07:14
把第一行的“*”号去掉。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表