IAR for 8051是用哪一种C语言编程的?

Python010

IAR for 8051是用哪一种C语言编程的?,第1张

IAR的C实际上是EC++,即所谓的嵌入式C++,与标准的C和C++略有不同,但无论如何,C与C++这一块知识都是一样的,本身与硬件关系不大多。

另一方面,C语言作为一种比较接近低层的语言,在不同的系统上都会做一些与硬件有关的扩展,这一部分,可以查系统附带的帮助手册,再结合系统的一些例子程序,动手做一下。51系统有个好处就是它的汇编比较简单,写完程序看看生成的汇编代码就基本上可以确定效果。

国内8051还是Keil用的多,IAR确实用的少,资料也少。用IAR的好处是它支持的CPU种类很多,写好的C代码比较方便在多种CPU之间移植。当然,这个方便也是相对的,实际上很有限。所以,如果你的程序不会在多种CPU上进行移植,还是用Keil吧,就8051来说,还是Keil比较专业。

嘉定单片机是STC89C52RC这款常用51单片机,推荐用两个74HC573,输入全接P0;输出接16个LED负极(573有一定驱动能力,实际应用可以接LED正极,但是习惯上仍采用灌电流的驱动方式)然后LED另一极接正极,设573的所存分别用P3.7和P3.6控制,程序如下:

#include<reg52.h>sbit suocun1=P3^7

sbit suocun2=P3^6

void delay(int z){

int x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

void main(){

char a

while(1)

{

suocun1=1

suocun2=0

for(a=0a<8a++)

{

P0=0x01<<1

delay(50)

}

suocun2=1

suocun1=0

for(a=0a<8a++)

{

P0=0x01<<1

delay(50)

}

}

}

我在KEIL4上编译0错误0警告

573的接法可以百度 datasheet 很简单的

启动ADC0809,ADC0809将开始将外部电压转换成数字,当转换完成时,转换完成信号引脚会输出一个电平(请查看datasheet).这时单片机就可以直接读取数据了.

如果要不停采集,就继续启动采集,再查询ADC0809完成引脚.

ADC0809芯片的采集速度是几百K吧.记不得了,你自己看下.

也可以将ADC0809的完成引脚接到单片机的外部中断引脚上,这样就可以在中断中读取.

代码自己找下吧,网上很多的.

这个给你参考:

#define

voldata

P2

sbit

adra=P0^0

sbit

adrb=P0^1

sbit

adrc=P0^2

sbit

ale=P0^3

sbit

st=P0^4

sbit

eoc=P0^5

sbit

oe=P0^6

unsigned

char

getvol(unsigned

char

adr)

{

unsigned

char

volnumber=0

unsigned

int

n=1000

oe=0

ale=0

adra=!(!(adr&0x01))

adrb=!(!(adr&0x02))

adrc=!(!(adr&0x04))

ale=1

st=0

st=1

st=0

while(n--)

while(!eoc)

oe=1

volnumber=voldata

oe=0

return(volnumber)

}

只要向函数传递一个0-7的地址(adra、adrb、adrc是地址线);便会返回相对应地址上的0-255的值;再根据相应的基准电压便可以计算出被测电压的值了!