自己写的C8051F020程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
DAC0CN = 0x80; //使能DAC0,msb使能位,更新方式在写高字节,数据格式高4低8
REF0CN = 0x03; //BIASE=1,允许内部偏压工作
DAC0L = 0x00;
DAC0H = 0x00;
}
void DAC0(unsigned int number) //输入一个uint型数据,范围从0x0000到0x0fff
ADC1CN = 0x80; // adc1使能,方式为向AD1BUSY写1启动转换
ADC1CF = 0x28;//转换时钟周期控制位
ADC1CF |= 0x01;//增益为1
EIE2 &= ~0x08; //关闭adc1转换结束中断
}
/**************************************************************
{
unsigned char low,high;
high = number>>8;
low = number%256;
DAC0L = low;
DAC0H = high; //高位写数据,开始转换
//Delay1us(5);//DAC转换延时
}
#endif
/**********************************************************************/
/************************************
*程序名:delay.h
*功能:延时函数,用于使用11.0596Mhz的F020
*************************************/
#ifndef _DELAY_H_
#define _DELAY_H_
#include <intrins.h>
{
P3IF &= 0x3f;
KeyCode = read_display();
Key_flag = 1;
}
void main(void)
{
unsigned int temp = 0;
WDTCN = 0xde;//关看门狗
WDTCN = 0xad;//在上一个写入后四个系统周期内写入有效
SYSCLK_Init();//初始化系统时钟
PORT_Init();//初始化IO口
lcd_Init();
DAC0_Init();
ADC0_Init();ຫໍສະໝຸດ Baidu
ADC1_Init();
AMX1SL = 0x00;
P1MDIN = 0xfe;
while(1)
{
temp = ADC1_read();
temp<<=4;
//display_int(temp,0,0);
ADC1CN &= 0xdf; //向ADC1INT写0
ADC1CN |= 0x10; //向ADC1BUSY写1
//Delay1us(10);
while(!(ADC1CN&0xdf)); //WAIT ACD1INT = 1
dout= ADC1;
return dout;
}
/*参考电压4V时,步进精度0.976mv*/
#include "c8051f020.h"
#include "delay.h"
#include "config.h"
#include "ADC1DAC0.h"
#include "ctypedef.h"
#include "lcd_chinese.h"
#include "7279.h"
#include "ADC0.h"
*函数名:unsigned char ADC1_read(void)
*功能:读ADC1数据(查询法)
****************************************************************/
unsigned int ADC1_read(void)
{
unsigned int dout;
Delay1us(200);Delay1us(200);
}
}
void Delay1s(uint i)
{
uchar j;
while(--i)
{
for(j=0; j<5; j++)
{
Delay1ms(200);
}
}
}
#endif //_DELAY_H_
#include <intrins.h>
#include <MATH.H>
unsigned char KeyCode;
bit Key_flag;
/**********************键盘中断***********************************/
void keyint_fun(void) interrupt 19
//Delay1us(10);
DAC0(temp);
}
}
#ifndef __ADC1DAC0_H__
#define __ADC1DAC0_H__
#include" c8051F020.h"
/**************************************************************
#include "ctypedef.h"
void Delay1us(uint i)
{
while(--i)
{
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
}
}
void Delay1ms(uint i)
{
while(--i)
{
Delay1us(200);Delay1us(200);Delay1us(200);
*函数名:void ADC1_init(void)
*功能:ADC1初始化(8位)
*输入:void
*返回:void
***************************************************************/
void ADC1_Init(void)
{
REF0CN = 0x03;//BIASE=1,允许内部偏压工作
/**********************************************
DAC0初始化//内部参考电压2.52V,使用内部基准时,在系统板上将VREF和VREFD连接
***********************************************/
void DAC0_Init(void)
相关文档
最新文档