×

单片机内部结构图

消耗积分:2 | 格式:pdf | 大小:60KB | 2017-04-05

颤抖过劲闪着腰丶

分享资料个

  STC12C5A60S2的内部程序及结构图

  //主程序lcd.h放在下面,需要根据IO的不同更改驱动口

  #include “stc12.h” #include“delay.h” #include“smg.h”

  #define uchar unsigned char #define uint unsigned int uint AD_get; float res; uint val; uint count=0;

  /*Define ADC operation const for ADC_CONTR*/

  #define ADC_POWER 0x80 //ADC电源控制位 #define ADC_FLAG 0x10 //ADC完成标志

  #define ADC_START 0x08 //ADC开始标志位。 //AD速度设置。

  #define ADC_SPEEDLL 0x00 //540 clocks #define ADC_SPEEDL 0x20 //360 clocks #define ADC_SPEEDH 0x40 //180 clocks #define ADC_SPEEDHH 0x60 //90 clocks

  void AD_Init() { uint i=0; P1ASF=0x01;//仅P1^0作为模拟输入。 ADC_RES=0;

  ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START;

  for(i=0;i《10;i++);//延时,打开总中断,AD中断。 EA=1; EADC=1; }

  void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; AD_Init(); while(1) {

  res=AD_get/1023.0*500.0; //AD_get的值从0到1023;

  val=(unsigned int)(res); //value的值从0到500;if(count==1) { display(val/100,val/10%10,val%10); } count=0; } } //AD中断。void adc_isr() interrupt 5 using 1 { ADC_CONTR &= !ADC_FLAG; //清楚AD的标志位。AD_get=(ADC_RES《《2)+ADC_RESL; //10位AD转换ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START; //重新将配置写入AD配置寄存器。} void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count=1; } val=(unsigned int)(res); //value的值从0到500; if(count==1) { display(val/100,val/10%10,val%10); } count=0; } }

  //AD中断。

  void adc_isr() interrupt 5 using 1 {

  ADC_CONTR &= !ADC_FLAG; //清楚AD的标志位。 AD_get=(ADC_RES《《2)+ADC_RESL; //10位AD转换 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START; //重新将配置写入AD配置寄存器。 }

  void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count=1; }

单片机内部结构图

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !