新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 2051的比较器模拟AD源程序(C语言)

2051的比较器模拟AD源程序(C语言)

作者:时间:2011-05-17来源:网络

2051的(C)

本文引用地址:http://www.eepw.com.cn/article/150738.htm

/* io分配: *
;* OUTPUT: *
;* P1.0 ...... 量输入 *
;* P1.1 ...... DA输入基准电压 *
;* P1.2~7..... R-2R DA电阻网络 *
;* P3.7 ...... LED 亮度输出 *
;* CPU CLOCK EQU 6M */
//xiaoqi last edit in 2001.11
//#pragma src
#i nclude AT89x051.h
#i nclude stdlib.h>
#i ncludemath.h>
#i ncludeintrins.h>

//变量类型标识的宏定义,大家都喜欢这么做
#define Uchar unsigned char
#define Uint unsigned int

#define Ledlight() (P3 = 0x7f)
#define Leddark() (P3 |= 0x80)

sbit P36 = P3^6; // 器内部判断脚
sbit LED = P3^7; // 一个发光二级管观察亮度变化

// 内部标志位定义
bit less; // 比较是否大于 1.小于,0.大于

// 全局变量定义
Uchar timer1, // 通用延时计数器
timer2, // 按键蜂鸣器反应定时器
adcdata, // ad转换变量
pwm1; // PWM输出比例

// 函数列表
void DelayMs(unsigned int number); // 毫秒延时
void timers0(); // 在定时器中断中做数码管的扫描显示(ct0)
void Initall(void); // 系统初始化
void timers1(void); // TC1定时器中断用于扫描显示与键盘
Uchar adcread(void); // adc转换程序

void main(void) using 0
{
DelayMs(120);
Initall();
pwm1 = adcread();
LED=1;
while(1)
{
pwm1 = adcread();
timer2=10;
while (timer2);
}
}

// 毫秒延时
void DelayMs(unsigned int number)
{
unsigned char temp;

for(;number!=0;number--)
for(temp=112;temp!=0;temp--);
}

/*************************************
在定时器中断中做LED的PWM输出
*************************************/
void timers0() interrupt 1 using 1
{
TH0 = 0xff;
TL0 = 0xd0;
timer1--;
if (timer1==pwm1)LED=0;
if (timer1==0){
LED=1;
timer1=0x40;
timer2--;
};
}

比较器相关文章:比较器工作原理


尘埃粒子计数器相关文章:尘埃粒子计数器原理
蜂鸣器相关文章:蜂鸣器原理

上一页 1 2 下一页

评论

技术专区

关闭