解决Protel 99se 老是未响应的问题 您所在的位置:网站首页 cf经常未响应开一把之后就没事了怎么办 解决Protel 99se 老是未响应的问题

解决Protel 99se 老是未响应的问题

2024-06-19 18:56| 来源: 网络整理| 查看: 265

ADC扫描模式理解

qq_55319421: P54 p55为什么会随延时约1秒1 0变化? #include "stc8g.h" //包含此头文件后,不需要再包含"reg51.h"头文件 #include "intrins.h" #define MAIN_Fosc 24000000L //定义主时钟 typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; #define ADCTIM (*(unsigned char volatile xdata *)0xfea8) u16 Get_ADC12bitResult(u8 channel); //channel = 0~15 void delay1us(unsigned int us) { unsigned int i, j; for(i = us; i > 0; i--) for(j =1000; j > 0; j--); } void mainm2(void) { u8 i; Get_ADC12bitResult(2); i = Get_ADC12bitResult(2); //读外部电压ADC if(i>200) { P55=0;} delay1us(1000) ; P55=1; } void mainm3(void) { u8 j; Get_ADC12bitResult(3); j = Get_ADC12bitResult(3); //读外部电压ADC if(j>200) { P54=0;} delay1us(1000) ; P54=1; } void main(void) { P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能 P3M0 &= ~0x0f; P3M1 |= 0x0f; //高阻 P5M0 &= ~0x30; P5M1 &= ~0x30; ADCTIM = 0x3f; //设置 ADC 内部时序,ADC采样时间建议设最大值 ADCCFG = 0x2f; //设置 ADC 时钟为系统时钟/2/16 ADC_CONTR = 0x80; //使能 ADC 模块 while(1) { mainm2(); mainm3(); } } //======================================================================== // 函数: u16 Get_ADC12bitResult(u8 channel) // 描述: 查询法读一次ADC结果. // 参数: channel: 选择要转换的ADC. // 返回: 12位ADC结果. // 版本: V1.0, 2012-10-22 //======================================================================== u16 Get_ADC12bitResult(u8 channel) //channel = 0~15 { ADC_RES = 0; ADC_RESL = 0; ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channel; //启动 AD 转换 _nop_(); _nop_(); _nop_(); _nop_(); while((ADC_CONTR & 0x20) == 0) ; //wait for ADC finish ADC_CONTR &= ~0x20; //清除ADC结束标志 return (((u16)ADC_RES



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有