求助,51单片机编程,模数转换芯片ADC0804,采用中断读取,程序不能编译,求高人指点。

作者&投稿:由亭 (若有异议请与网页底部的电邮联系)
求助:c51单片机 ADC0804转换问题!~

试试这个程序调电位器看是不是你想要的效果
#include
sbit rd=P3^7;
sbit wr=P3^6;
sbit csad=P3^5;
int t;
main()
{
while(1)
{
csad=0;
rd=0;
wr=0;
wr=1;
for(t=10000;t>0;t--);
}
}

这个仿真实例可以参考一下,试试。

init();
uchar aa,aa1,aa2,aa3,adval;这里有问题,目前很多51单片机的编译器还不支持某些C99的特性,所有变量必须在程序或者函数的开始声明,才能使用
void int0() interrupt 0
{
P0=0xff;
adrd=1;
_nop_();
adrd=0;
_nop_();
adval=P0; ;这个变量没有定义,你在主函数中定义的adval只能在主函数中使用,要在这里使用,就把adval定义为全局变量
adrd=1;
}

void main()
{
init();
uchar aa,aa1,aa2,aa3,adval;
aa1=aa2=aa3=0;
adcs=0;

问题出在这里,C语言不是C++,一个函数里,你如果要定义变量,必须定义在这个函数最开始,然后才能做其他的事情,你这个main函数,是先调用 init();再定义的变量,这在C语言里不允许,所以,如下修改:

void main()
{

uchar aa,aa1,aa2,aa3,adval;
init();

aa1=aa2=aa3=0;
adcs=0;


51单片机C语言编程
\/\/ 51单片机C语言编程,这个时钟+秒表可以参考一下。include<reg51.h> define uchar unsigned char define uint unsigned int sbit qingling=P1^0; \/\/清零 sbit tiaofen=P1^1; \/\/调分 sbit tiaoshi=P1^2; \/\/调时 sbit sounder=P1^7; \/\/naozhong uint a,b;uchar hour,minu,sec, ...

c语言编程c51单片机
include <reg51.h> define uchar unsigned char define uint unsigned int main(){ uint xdata *xp;\/\/定义指向片外RAM的指针 uint data *p;\/\/定义指向片内RAM的指针 uchar i;\/\/定义循环变量 xp=0x100;\/\/指向片外RAM的100H单元 p=0x30;\/\/指向片内RAM的30H单元 for(i=0;i<10;i++){\/\/...

51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计...
像这种发送字符串的,需要有一个字符串结束标志,不能用0作为字符串结束标志了!这里以回车作0xd为结束标志!include <reg51.h> typedef unsigned char uint8;bit flag = 0;uint8 idata buf[30];uint8 ct;void InitUART(void) \/\/串口初始化 9600bps { TMOD = 0x20;SCON = 0x50;TH1 = 0x...

51单片机串口通信c语言编程
include <REG52.H> define uchar unsigned char define uint unsigned int sbit ring=P3^7;sbit CASE1=P2^0;sbit CASE2=P2^1;sbit CASE3=P2^2;sbit CASE4=P2^3;uchar se=0,re=0;uchar temp=0;void wait(uint cnt){ while(--cnt);} \/\/串口发送程序 void send(uchar se){ SBUF=se...

51单片机是什么?如何学习它的编程?都用在哪些方面
51单片机是基础入门的一个单片机,还是应用最广泛的一种。现在每年仍旧会使用几十亿片51系列的兼容芯片,在你想得到的电器、玩具上,比如:遥控灯具、洗衣机、冰箱、电子钟表、显示器、汽车(每辆汽车可能会用到十几到几十片)。。。学习它很简单,到当地书店、图书馆、随手可以找到几十种单片机入门书,...

51单片机按键控制继电器的编程,按下键继电器闭合再按下键继电器断开,求...
void Delay(unsigned int ii) \/\/1MS { unsigned int jj;for(;ii>0;ii--)for(jj=0;jj<125;jj++){;} } void main(){ while(1){ if ((K1==0)&&(change == 0)){ Delay(10);if ((K1==0)&&(change == 0)){ change = 1;JDQ=0;\/\/吸合 P0=0x00;\/\/P0口LED亮 } } if ...

求一个51单片机C语言程序编程
include<reg51.h> \/*甲机*\/ sbit k=P1^0;sbit P00=P0^0;sbit P03=P0^3;unsigned chari,NO;void main(void) \/* 主函数*\/ { SCON=0x40; \/*方式1只发送,不接收*\/ TMOD=0x20;TH1=0xfd; \/*给定时器T1赋初值,波特率为9600*\/ TL1=0xfd;TR1=1;k=1;NO=0;while(1...

51单片机遥控车编程,帮忙写程序要求在下面
include <reg52.h> define uchar unsigned char define uint unsigned int sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;sbit key1=P2^0;sbit key2=P2^1;sbit key3=P2^2;void delay(uint n){ uint x,y;for(x=n;x>0;x--)for(y=110;y>0;y--);} void ...

51单片机编程题,帮我编个程序。
ORG 001BH ;定时器1中断矢量地址 LJMP T1_ISR ;转到中断子程序处执行 ORG 0030H MAIN: MOV TMOD,#20H ;采用定时器方式2,8位自动重载 MOV TH1,#6 ;由于周期500u,故高低电平均持续250u MOV TL1,#6 ;计算得定时初值,定时250u MOV R0,#4 ;置循环次数,4x250u=1m...

51单片机按键计数器C语言编程
include<reg51.h>#define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到fuchar number,dat,dis[4];void t0isr() interrupt 1{TH0=(65536-5000)\/256;TL0=(65536-5000)%256;number++...

临澧县18061876168: 如何利用PCF8591P和51单片机编程,实现模数转换,求程序及解释 -
邵果乙酰: 知道内部寄存器的地址,只要调用单片机模拟I2C时序的程序就可以了.写寄存器设定转换工作方式,输入引脚,启动转换,然后读取转换结果再处理就可以了.

临澧县18061876168: 模数转换芯片的选择 -
邵果乙酰: 模数转换芯片有好多种,我建议你先德州的TLC2543,这个芯片是12位的,5V电压供电,与单片机串行通信,占用端口少,而且市场上又常见.我用的就是这个.以下是驱动程序,供你参考 /************************************** TLC2543驱动程序 ...

临澧县18061876168: 请教一下用51单片机接模数转换芯片的问题? -
邵果乙酰: 很多51系列的单片机都有AD 如果要求不是很特别还是用自身的AD 采纳哦

临澧县18061876168: 单片机的模数转换 -
邵果乙酰: 模拟信号放大之后,如果电压超过0-5V范围是绝对不能直接加P1口的,严重的话会将P1口烧坏.如果电压在0-5V内,可以接入P1口,但是没有意义.单片机是不能直接读入模拟量的,只能读入信号量.比如,电压大于某一个阀值读入的是1,反之读入的是0.具体的阀值电压是多少要看单片机芯片自身的接口电路.89C51没有做AD用的口,要外加专用AD芯片.

临澧县18061876168: 51单片机 AD模数转化 tlc1549芯片 -
邵果乙酰: 左移一位呀,准备接收下一位 下一句if(addata)adtemp++; 就是接收下一bit

临澧县18061876168: 我想将一个模拟电压信号进行模数转换,怎么接线,用51单片机 -
邵果乙酰: 首先要选定一个合适精度的AD转换器,模拟电压必须经过它才能变成数字信号,并与51单片机连接.或者选用具有AD功能的51系单片机.

临澧县18061876168: 51单片机c语言,ADC模数转换的问题 -
邵果乙酰: 对于这个,要这么看:假设中断A是优先级高的中断,中断B是优先级低的中断 如果在正常执行的过程中,发生中断A,那么,中断A执行完成后,会返回正常程序; 如果在正常执行过程中,发生中断B,又在中断B处理过程中发生中断A,那么,中断A执行完成后,一定要返回的是中断B,这是由硬件决定的,不是软件决定的,所以,软件没有任何指令可以让中断A执行完成后直接跳过还没有执行完的中断B而直接回到主程序,因为这是硬件决定的,软件做不到,即便你在高级中断A中关闭了中断B,但是因为你原来的中断B还没有执行完,所以,仍然要把没执行完的部分执行下去,才能返回到正常程序.对于ARM系列的可以,对于51来说,是不行的,因为51软件指令不允许修改PC寄存器的值

临澧县18061876168: 我的毕业设计题目是有关51单片机,请“单片机”高手帮帮忙! -
邵果乙酰: 51单片机能做,思路就是需要一个温度传感器,再用一个模数转换器,将温度传感器产生的模拟信号转换为数字信号,通过单片机驱动显示,将其显示出来,当然还可以扩展为:有温度点最大值、最小值查询,平均值查询等多功能的,这个就是你自己的能力和思维扩散

临澧县18061876168: 51单片机带不带模数转换 -
邵果乙酰: 51单片机加强核就带.一般的51是不带的.别的单片机像avr,msp430就带.

临澧县18061876168: 51单片机数模转换 -
邵果乙酰: 这个程序的效果是 电压值逐渐上升 然后逐渐下降 吗? 说下我的理解. P0=0 // 初值呀, 这样转化到0V.flag 是一个标志 当数字量(val)为255(最大转化值)时置1. 为0时清零.val是一个待转化的数字量 .把val的值给P0口 ,再通过P0与数模...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网