查看: 1360|回复: 0
打印 上一主题 下一主题

基于89C2051的电压采样程序

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-23 20:25:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <absacc.h>
#include <stdio.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
sbit        P36        = P3^6;                                        // 比较器内部判断脚
// 内部标志位定义
bit        less;                                                        // 比较是否大于 1.小于,0.大于
// 全局变量定义
uchar  timer1;                                                // 通用延时计数器
uchar  adcdata;                                                // ad转换变量

void Delay(unsigned int number);              // 毫秒延时
uchar adcread(void);                                        // adc转换程序

void main(void)  using 0
{
TMOD = 0x11;                                        // 计数器设定
IP = 0x8;                                                // 优先级的设定
IE = 0x8A;                                                // 中断允许
TCON = 5;                                                // 外部中断低电平触发
TR0 = 1;                                                // 打开定时器中断
TR1 = 0;
ET0 = 1;
ET1 = 0;
P1 = 0xff;
Delay(120);
while(1)
{
adcdata= adcread();                                // 读取数据进行A/D转换
}
}
// 毫秒延时
void Delay(unsigned int number)
{
unsigned char temp;
for(;number!=0;number--)
for(temp=112;temp!=0;temp--);
}

//  6位 ADC转换
uchar adcread(void)
{
uchar i=0x3f,temp=0;                                        // 初始化转换变量
P36 =1;                                                        // 比较器端口置1
P1 = 3; _nop_();_nop_();                                // 从零开始转换
while ((i--)&& (P36))                                        // 开始数据读取和比较
{
temp += 4;
P1 = temp|3;
_nop_();
}
temp >>= 2;
return temp;                                                        // 转换完毕,返回
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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