📄 text1.c
字号:
#include <reg51.h>
#include<stdio.h>
#define ADC0809CH0 0xDFEF8 //0809通道0地址
#define ADC0809CH1 0xDFEF9 //0809通道1地址
#define ADC0809CH2 0xDFEFA //0809通道2地址
#define ADC0809CH3 0xDFEFB //0809通道3地址
#define uchar unsigned char //uchar代表单个字节无符号数
#define uint unsigned int //uint无符号字
xdata uint cChannelIndex;
xdata uchar cDigitalData[4]=0;
xdata uint nCurrentAddr;
bit BusyFlag=0; //忙标志位 1为忙状态
Uart_Init(); //输出口初始化
void SelectChannel(uint c0809addr,uchar c0809data);
uchar GetResult( );//得到转换结果
void Delay(); //延时程序
main()
{ Uart_Init(); //
P0=0XFF; //端口初始化为0xFF
P1=0XFF;
P2=0XFF;
P3=0XFF;
EX0=1; //开外部中断0
EA=1; //全局中断打开
cChannelIndex=0;
nCurrentAddr=ADC0809CH0;
BusyFlag=1; //置忙标志
SelectChannel(ADC0809CH0,cChannelIndex); //选择ADC0809通道0
while(BusyFlag); //等待转换完成
cChannelIndex++;
nCurrentAddr=ADC0809CH1;
BusyFlag=1; //置忙标志
SelectChannel(ADC0809CH1,cChannelIndex); //选择ADC0809通道1
while(BusyFlag); //等待转换完成
cChannelIndex++;
nCurrentAddr=ADC0809CH2;
BusyFlag=1; //置忙标志
SelectChannel(ADC0809CH2,cChannelIndex); //选择ADC0809通道2
while(BusyFlag); //等待转换完成
cChannelIndex++;
nCurrentAddr=ADC0809CH3;
BusyFlag=1; //置忙标志
SelectChannel(ADC0809CH3,cChannelIndex); //选择ADC0809通道3
while(BusyFlag); //等待转换完成
while(1);
}
Uart_Init()
{SCON = 0x52; /* 设置串行口控制寄存器SCON*/
TMOD = 0x21; /* 12M时钟时波特率为2400 */
TCON = 0x69; /* TCON */
TH1 = 0xf3; /* TH1 */
}
void SelectChannel(uint c0809addr,uchar c0809data)
{
*((uchar xdata *)c0809addr)=c0809data;
//选择ADC0809通道
}
uchar GetResult( )//得到转换结果
{uchar cResult;
cResult=*((uchar xdata *)nCurrentAddr);
return cResult; //返回转换后数字量
}
void Delay() //延时程序
{ uint i;
for(i=0;i<200;i++);
}
void int0() interrupt 0 using 0
{ cDigitalData[cChannelIndex]=GetResult();
BusyFlag=0; //忙标志清0
//printf("Got channel %d Result\n",cChannelIndex);
/*响应INT0后输出*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -