找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2267|回复: 4
打印 上一主题 下一主题
收起左侧

用keil仿真MCU程序直接跑到最后一行,请教各位大侠哪里错了?

[复制链接]
跳转到指定楼层
楼主
ID:349144 发表于 2019-3-1 13:14 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的这个程序无法运行
// STC 官网 STC12C5Axx Series MCU A/D 例程
#include "STC12C5A60S2.H"
#include "stdio.h"
#include "intrins.h"
#define uchar unsigned char
#define UINT8  unsigned int
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共阳数字编码  0.1.2.3.4....9

UINT8 code tongdao[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};                 //通道选择0-7
int getad(UINT8 tongdao);
UINT8 junzhi=0;
void delay(uchar i)         //延时函数
{
  uchar j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

void display() //显示函数
{
   P0=table[junzhi/1000];
   P2_0 = 0;
   delay(5);
   P2_0 = 1;

   P0=table[junzhi%1000/100];
   P2_1 = 0;
   delay(5);
   P2_1 = 1;

   P0=table[junzhi%100/10];
   P2_2 = 0;
   delay(5);
   P2_2 = 1;

    P0=table[junzhi%10];
   P2_3 = 0;
   delay(5);
   P2_3 = 1;
   
}
void ad_init()
{
P1M0=0xff;
P1M1=0xff;                        //P1口设置成开漏模式
ADC_CONTR=0xe0;                //开A/D控制寄存器  ADC_POWER(AD电源控制位) SPEED1、SPEED0(为转换速率选择位(都为1时)速度最快为210个时钟/次) ADC_FLAG 转换结束标志位 ADC_START:ADC转换器的启动控制位 CHS2、CHS1
delay(200);
}

int getad(UINT8 tongdao)                  //转换函数
{
UINT8 jieshu=0;
int jieguo;
ADC_CONTR|=tongdao;
ADC_CONTR|=0x08;
while(jieshu==0)
{
jieshu=(ADC_CONTR&0x10);
}
//jieguo=(ADC_DATA<<2)+ADC_LOW2;   //5410ad单片机用数据调取
         jieguo=ADC_RES;                                  //60s2单片机用数据调取
ADC_CONTR&=0xef;
return (jieguo);
}

float qiuzhi(UINT8 tongdao)                           //滤波求值函数
{
UINT8 junzhi=0;
UINT8 i;
for(i=15;i>0;i--)
{
junzhi+=getad(tongdao);
}
junzhi/=15.0;
junzhi=((junzhi*5.0)/0.256)+5;
//junzhi=junzhi*0.13-30.0;
//junzhi=junzhi/6.5536;
junzhi=(2507-junzhi)/0.86;

return (junzhi);

}
void main()
{
     void ad_init();
  while(1)  
    {
         int getad(UINT8 tongdao);
     float qiuzhi(UINT8 tongdao);
     void display();
     }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2019-3-1 16:18 | 只看该作者
  1. void main()
  2. {
  3.         ad_init();
  4.         while(1)  
  5.         {
  6.                 getad(tongdao);
  7.                 qiuzhi(tongdao);
  8.                 display();
  9.         }
  10. }
复制代码
回复

使用道具 举报

板凳
ID:482783 发表于 2019-3-1 16:23 | 只看该作者
你没有描述清楚你的仿真环境,具体问题描述也不清楚,你可以看一下这个帖子,希望对你有帮助。
https://blog.csdn.net/qlexcel/article/details/54949093
回复

使用道具 举报

地板
ID:94031 发表于 2019-3-1 16:26 | 只看该作者
main()里,ad_init()前不该有void。
回复

使用道具 举报

5#
ID:349144 发表于 2019-3-3 11:50 来自手机 | 只看该作者
谢谢各位老师的指点,我试一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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