STC12C5A60S2系列单片机特殊功能寄存器名称及映像

合集下载

STC12C5A60S2单片机的AD转换(8位)

STC12C5A60S2单片机的AD转换(8位)

A/D转换测试程序(ADC查询方式)#include “”//头文件在STC公司主页上下载#include ””//与STC12C5A60S2单片机ADC相关的寄存器说明//Sfr ADC_CONTR = 0xBC;//AD转换控制寄存器Sfr ADC_RES = 0xBD;//AD转换结果寄存器高Sfr ADC_RESL = 0xBE;//AD转换结果寄存器低Sfr P1ASF = 0x9D;//P1口模拟转换功能控制寄存器Sfr AURX1 = 0xA2;//AD转换结果存储方式控制位#define ADC_POWER 0x80 //ADC电源开#define ADC_FLAG 0x10 //ADC结束标志位#define ADC_START 0x08 //ADC启动控制位设为开#define ADC_SPEEDLL 0x00 //设为540个时钟周期ADC一次#define ADC_SPEEDL 0x20 //设为360个时钟周期ADC一次#define ADC_SPEEDH 0x40 //设为180个时钟周期ADC一次#define ADC_SPEEDHH 0x60 //设为90个时钟周期ADC一次void AD_init(void);void delay(unsigned int a);unsigned int AD_get(unsigned char n);float AD_work(unsigned char n);void main(){unsigned char i;AD_init();while(1){for(i=0;i<8;i++){AD_work(i);delay(20);}}}unsigned int AD_get(unsigned char n) //第n通道ADC采样函数{unsigned int adc_data;ADC_RES = 0; //清零ADC_CONTR=ADC_POWER|ADC_SPEEDLL|n|ADC_START;//打开AD转换电源、设定转换速度、设定通道号、AD转换开始_nop_();_nop_();_nop_();_nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR?寄存器?while(!(ADC_CONTR&ADC_FLAG)); //等待转换完成adc_data=ADC_RES; //转换结果计算,取8位结果ADC_CONTR&=~ADC_FLAG;//关闭AD转换,ADC_FLAG位由软件清0return adc_data;???//返回ADC的值}float AD_work(unsigned char n){float AD_val; //定义处理后的数值AD_val为浮点数unsigned char i;for(i=0;i<100;i++)AD_val+=AD_get(n); //转换100次求平均值(提高精度)AD_val/=100;AD_val=(AD_val*5)/256; //AD的参考电压是单片机上的5v,所以乘5即为实际电压值return AD_val;}void AD_init(void){P1ASF = 0xff; //P1口全部作为模拟功能A/D使用ADC_RES = 0; //清零转换结果寄存器高8位ADC_CONTR = ADC_POWER|ADC_SPEEDLL;delay(2); //等待1ms,让AD电源稳定}void delay(unsigned int a){unsigned int i;while (a--){i=5000;while(i--);}}。

STC12C5A60S2单片机各个模块程序代码

STC12C5A60S2单片机各个模块程序代码

//********************************************************************** ******// // STC12C5A60S2可编程时钟模块//////****************************************************************************//#include <STC12C5A60S2.H>#include <intrins.h>//#define Port_BRT //如果想测试独立波特率发生器时钟输出请打开此句 //若想测试CLKOUT1和CLKOUT0请注释此句#ifdef Port_BRT /*条件编译独立波特率发生器时钟输出*///*********************************//}#else /*条件编译CLKOUT0时钟输出*///*********************************//// CLKOUT0时钟和CLKOUT1初始化 ////*********************************//void CLKOUT_init(void){WAKE_CLKO = 0x03; //允许将P3.4/T0脚配置为定时器0的时钟输出CLKOUT0 //T0工作在1T模式时的输出频率 =SYSclk/(256-TH0)/2倍倍AUXR = 0xc0; //T0定时器速度是普通8051的12倍,即工作在1T模式下//T1定时器速度是普通8051的12倍,即工作在1T模式下TMOD = 0x22; //定时器0工作模式为方式2,自动装载时间常数 //定时器1工作模式为方式2,自动装载时间常数TH0 = 0xff; //更改该寄存器的值可实现对输出的时钟频率进行分频TL0 = 0xff;TH1 = 0xff; //更改该寄存器的值可实现对输出的时钟频率进行分频//****************************************************************************//// STC12C5A60S2系统时钟模块////// 说明: STC12C5A60S2单片机有两个时钟源,内部R/C振荡时钟和外部晶体时钟// 出厂标准配置是使用外部晶体或时钟//4、8、#include <intrins.h>#define Bus_clk 12 //若要修改系统时钟直接在此处修改//12 为 12M 的sysclk//6 为 6M 的sysclk//3 为 3M 的sysclk //1500 为 1.5M 的sysclk //750 为 750kHz 的sysclk //375 为 375kHz 的sysclk //187500 为 187.5kHz 的sysclkCLK_DIV = 0x01;#elif( Bus_clk == 3 )CLK_DIV = 0x02;#elif( Bus_clk == 1500 )CLK_DIV = 0x03;#elif( Bus_clk == 750 )CLK_DIV = 0x04;#elif( Bus_clk == 375 )CLK_DIV = 0x05;#elif( Bus_clk == 187500 )//****************************************************************************//// STC12C5A60S2系统省电模块////// 说明: STC12C5A60S2单片机有三种省电模式以降低功耗.空闲模式,低速模式// 掉电模式//)#define uint unsigned intuchar Power_Down_Flag = 0; //进入掉电状态标志sbit Chip_Start_LED = P0^0; //单片机开始工作指示灯sbit Power_Down_LED_INT0 = P0^1; //INT0口掉电唤醒指示灯sbit N_Power_Down_LED_INT0 = P0^2; //INT0口没有唤醒指示灯sbit Normal_Work_LED = P0^3; //正常工作指示灯sbit Power_Down_Wakeup_INT0= P3^2; //外中断唤醒输入口for( t = 0; t < 82; t++ );}}//***********************************//// 正常工作指示//***********************************// void Normal_work(void){Normal_Work_LED = 1;Delay_ms(500);}//***********************************// // 中断初始化 // //***********************************// void Intp_init(void){IT0 = 0; //外部中断源0为低电平触发 EX0 = 1; //允许外部中断EA = 1; //开总中断}wakeup_counter++;for( j = 0; j < 250; j++ ){Normal_work(); //系统正常工作指示}Power_Down_Flag = 1; //系统开始进入掉电状态PCON = 0x02;_nop_();_nop_();_nop_();while( Power_Down_Wakeup_INT0 == 0 ){_nop_(); //等待高电平}Power_Down_LED_INT0 = 0;}else //未掉电状态{N_Power_Down_LED_INT0 = 1; //不是掉电唤醒指示while( Power_Down_Wakeup_INT0 == 0 )////// 说明: STC12C5A60S2单片机有8路10位高速AD转换器,P1^0-P1^7//// 涉及寄存器:P1ASF(模拟功能控制寄存器)、ADC_CONTR(ADC控制寄存器)// ADC_RES、ADC_RESL(转换结果寄存器)//// 注意: 1、初次打开内部A/D模拟电源需适当延时等内部模拟电源稳定后,再启动A/D转换// 启动A/D后,在转换结束前不改变任何I/O口的状态,有利于高精#include <STC12C5A60S2.h>#include <intrins.h>#include "lcd.h"#define ADC_POWER 0x80 //AD电源控制#define ADC_START 0x08 //AD转换控制#define ADC_FLAG 0x10 //AD转换完成#define Speed_0 0x00 //540 clk#define Speed_1 0x20 //360 clk#define Speed_2 0x40 //180 clk// A/D初始化////**********************************//void AD_init(void){AUXR1 = 0x04; //转换结果高2位放在ADC_RES的低2位中,低8位放在ADC_RESL中P1ASF = 0x01; //P1.0口作为模拟功能A/D使用 ADC_RES = 0x00; //结果清零ADC_RESL = 0x00;ADC_CONTR = ADC_POWER|Speed_2|ADC0|ADC_START; //打开电源,180CLK周// 串口初始化 ////****************************************//void UART_init(void){SM0 = 0; //选择串口为方式1工作SM1 = 1; //8位数据波特率可变REN = 1;BRT = 0xDC;AUXR = 0x15; //选择独立波特率发生器为串行 //口的波特率发生器,模式为1T// 串口发送数据// //******************************************// void SendData( uchar byte ){SBUF = byte;while(!TI);TI = 0;}//******************************************//// 主程序//ADC_CONTR &= !ADC_FLAG; //清标志Printf_Decimal(Result_Calculate());ADC_RES = 0x00;ADC_RESL = 0x00;ADC_CONTR = ADC_POWER|Speed_2|ADC_START; //开始下一次转换_nop_();_nop_();_nop_();_nop_();}uchar Read_Date(void); //读数据void Write_Cmd( uchar cmd ); //写命令void Write_Date( uchar date );//写数据void Init_LCD(void);//初始化LCDvoid Location( uchar x, uchar y );//设定显示位置void Clear_Screen(void);//清屏void Write_str( uchar *p );void Printf_Decimal(double Num);#include "lcd.h"for( t = 0; t < 41; t++ );}}//**********************************////* 名称: Busy()//* 功能: 读取忙状态//* 输入: 无//* 输出: 1-忙 0-空闲//**********************************//uchar Busy(void)//* 功能: 读12864状态//* 输入: 无//* 输出: status-当前状态//**********************************// uchar Read_Status(void){uchar status;RS = 0;RW = 1;E = 0;//* 名称: Write_Cmd()//* 功能: 向12864写命令//* 输入: cmd - 命令参数//* 输出: 无//**********************************//void Write_Cmd( uchar cmd ){RS = 0;RW = 0;//**********************************// void Write_Date( uchar date ){while(Busy());RS = 1;E = 0;_nop_();_nop_();P2 = date;uchar Read_Date(void){uchar date;while(Busy()); //忙RS = 1;E = 0;_nop_();_nop_();_nop_();//**********************************// void Init_LCD(void){Delay_ms(4);PSB = 1;//并行方式Delay_ms(4);Write_Cmd(0x0c);//开显示关游标Delay_ms(4);Clear_Screen();//清屏}else if( x == 2 )x = 0x90;else if( x == 3 )x = 0x88;else if( x == 4 )x = 0x98;position = x + y;Write_Cmd(position);Delay_ms(2);}Delay_ms(10);}//**********************************// //* 名称: Write_str()//* 功能: 向12864里写字符串//* 输入: *p -- 字符串地址//* 输出: 无//**********************************// void Write_str( uchar *p ){{uchar s[6] = {0,0,46,0,0};uint t;t = (uint)(Num * 1000);s[0] = t/10000+48;s[1] = t%10000/1000+48;s[3] = t%1000/100+48;s[4] = t%100/10+48;s[5] = t%10+48;Location(1,2);// STC12C5A60S2 PCA/PWM模块////// 说明: STC12C5A60S2单片机有两路可编程计数器阵列(PCA)模块,可用于软件// 定时器,外部脉冲的捕捉、高速输出以及脉宽调制(PWM)输出//// 涉及寄存器:CMOD(PCA工作模式寄存器) CCON(PCA控制寄存器) // CCAPM0,CCAPM1(PCA比较/捕获寄存器)// CH,CL(PCA的16位计数器)、CCAPnL,CCAPnH(PCA捕捉/比较********//#include <STC12C5A60S2.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*******高速模式变量更改*********/#define FOSC 12000000#define T100KHz (FOSC/2/100000) //高速脉冲输出频率计算: f = PCA模块的时钟源/(2*CCAP0L)//CCAP0L = PCA时钟源/2/f)#define CLK_6 0x0d //Sysclk/6#define CLK_8 0x0e //Sysclk/8/********模式选择********/#define H_model 0x4d //高速输出模式,中断模式#define T_model 0x49 //定时模式#define P_model 0x42 //无中断PWM模式#define PL_model 0x63 //由低变高可中断PWM模式#define PH_model 0x53 //由高变低可中断PWM模式#define PHL_model 0x73 //高低都可中断PWM模式#define CU_model 0x61 //16位捕获,上升触发中断模式//********************************//// H_model初始化 ////********************************//void HP_init(void){CMOD = CLK_4; //PCA时钟源为SysclkCCAPM0 = H_model; //高速输出模式CCAP0L = value;CCAP0H = value>>8;value += T100KHz;CR = 1; //开启PCA计数器//当不使用定时0溢出为时钟源时,PWM输出的频率=PCA的时钟源/256//使用定时器溢出的时钟源时,可设定定时器的值对输出频率的改变//分频为0-256分频}//********************************// // T_model初始化 // //********************************//void CD_init(void){CMOD = CLK_4;CCAPM0 = CD_model;CR = 1;EA = 1;}//********************************// // 主程序 // //********************************////*******************************// void CD_Service(void) interrupt 7{CCF0 = 0;LED = ~LED;/*void TP_Service(void) interrupt 7{CCF0 = 0; //清除PCA计数器溢出中断标志test++;CCAP0L = value;CCAP0H = value>>8;value += T100KHz;} *///****************************************************************************//// STC12C5A60S2串行通信模块// IP(中断优先级寄存器)IPH()SADEN()SADDR()WAKE_CLKO(时钟唤醒寄存器)// Bit1 - PD 控制单片机进入掉电模式// //// 程序说明:程序实现从PC端发送数据到单片机,单片机将接收到的数据通过12864// 显示出来////****************************************************************************//时需修//波特率为19200uchar Send_Bflag = 0; //正在发送标志uchar Receive_Bflag = 0; //正在接送标志uchar Re;sbit LED = P1^4;sbit LED1 = P1^5;void UART_init(void);void Delay( uint time );#elif( BTL == 4800 )BRT = 0xB8;#elif( BTL == 9600 )//波特率设置为9600BRT = 0xDC;#elif( BTL == 14400 )BRT = 0xE8;#elif( BTL == 19200 )BRT = 0xEE;#elif( BTL == 28800 )BRT = 0xF4;}//************************************************// // 发送一个字节数据 // //************************************************// void Send_byte( uchar byte ){SBUF = byte;while(!TI);TI = 0;// 接收函数 // //************************************************//void Receive( void ){Write_Date(SBUF);Re++;if( Re == 16 )Location(2,0); if( Re == 32 )Location(3,0); if( Re == 48 )Location(4,0);if( Re == 66 )UART_init();while(1){if( RI == 1 ){RI = 0;Receive();Printf("Success!");}EA = 1;}//****************************************************************************//// STC12C5A60S2 SPI接口模块////是数#include <STC12C5A60S2.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/************对SPCTL寄存器的设置位宏定义*************/#define SSIG 0x80 //SS引脚忽略#define SPEN 0x40 //SPI使能位#define DORD 0x20 //SPI数据发送LSB最先发送#define MSTR 0x10 //主从模式选择/************串口波特率设定*************************/#define BTL 9600 //若要更改波特率直接更改此处,当波特率大于9600时需修改相应的接收程序,//可选波特率有以下: 否则有可能出现乱码//波特率为2400 //波特率为28800//波特率为4800 //波特率为38400 //波特率为9600 //波特率为57600 //波特率为14400 //波特率为115200//波特率为19200void UART_init(void);#if( BTL == 2400 )BRT = 0x70; //波特率设置为9600 #elif( BTL == 4800 )BRT = 0xB8;#elif( BTL == 9600 )BRT = 0xDC;#elif( BTL == 14400 )BRT = 0xE8;#elif( BTL == 19200 )BRT = 0xEE;// IP = 0X10; //PS = 1;串口1中断为最高优先级中断// EA = 1; //开总中断}//************************************************// // 发送一个字节数据 ////************************************************// void Send_byte( uchar byte ){SBUF = byte;while(!TI);//************************************************// // 接收函数 // //************************************************//uchar Receive( void ){uchar byte;_nop_();_nop_();_nop_();_nop_();//***********************************//void Init_SPI(void){SPDAT = 0; //清空数据寄存器 SPSTAT = SPIF|WCOL; //清空SPI状态寄存器SPCTL = SPEN|MSTR; //SPI设置为主机模式IE2 = 0x02; //允许SPI中断}//***********************************////* 名称:mainif(flag) //当PC端有发送数据时才进行SPI传输数据{SPISS = 0;SPDAT = flag;flag = 0;。

STC12C5A60S2头文件

STC12C5A60S2头文件

RWS2,RWS1,RWS0:
000 : The MOVX read/write pulse is 1 clock cycle.
001 : The MOVX read/write pulse is 2 OVX read/write pulse is 3 clock cycles.
//新一代 1T 8051系列 单片机中断特殊功能寄存器
//有的中断控制、中断标志位散布在其它特殊功能寄存器中,这些位在位地址中定义
//其中有的位无位寻址能力,请参阅 新一代 1T 8051系列 单片机中文指南
// 7 6 5 4 3 2 1 0 Reset Value
/*
ALES1 and ALES0:
00 : The P0 address setup time and hold time to ALE negative edge is one clock cycle
01 : The P0 address setup time and hold time to ALE negative edge is two clock cycles.
//重要的事情说三遍!!!!
//新一代 1T 8051系列 单片机内核特殊功能寄存器 C51 Core SFRs
// 7 6 5 4 3 2 1 0 Reset Value
SS 从P1.4 切换到P4.0 口
S2_P4:
0, 缺省UART2 在P1 口
1,UART2 从P1 口切换到P4 口: TxD2 从P1.3 切换到P4.3 口
RxD2 从P1.2 切换到P4.2 口
sfr AUXR = 0x8E; //Auxiliary Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000

STC12C5A60S2 系列单片机器件手册 说明书

STC12C5A60S2 系列单片机器件手册 说明书

Tel: 0755-********Fax: 0755-********创始人/研发总监:姚永平(139********)宏晶STC 官方网站: 1STC12C5A60S2系列 1T 8051 单片机中文指南全球最大的8051单片机设计公司S T C M C U L i m i t e d .临时技术支持:139********授权代理:南通国芯微电子有限公司总机:0513-5501 2928 / 2929 / 2966传真:0513-5501 2969 / 2956 / 2947宏晶STC 单片机官方网站: Update date: 2011/3/19---高速,高可靠---低功耗,超低价---超���超���� ---�抗静电,�抗干扰---1个时钟/机器周期8051STC12C5A60S2系列单片机器件手册STC12C5A08S2, STC12C5A08ADSTC12C5A16S2, STC12C5A16ADSTC12C5A20S2, STC12C5A20ADSTC12C5A32S2, STC12C5A32ADSTC12C5A40S2, STC12C5A40ADSTC12C5A48S2, STC12C5A48ADSTC12C5A52S2, STC12C5A52ADSTC12C5A56S2, STC12C5A56ADSTC12C5A60S2, STC12C5A60AD STC12C5A62S2, STC12C5A62AD全部中国大陆本土独立自主知识产权,技术处于全球领先水平,请全体中国人民支持,您的支持是中国大陆本土企业统一全球市场的有力保证.目录第1章STC12C5A60S2系列单片机总体介绍 (8)1.1 STC12C5A60S2系列单片机简介 (8)1.2 STC12C5A60S2系列单片机的内部结构 (10)1.3 STC12C5A60S2系列单片机管脚图 (11)1.4 STC12C5A60S2系列单片机选型一览表 (13)1.5 STC12C5A60S2系列单片机最小应用系统 (15)1.6 STC12C5A60S2系列在系统可编程(ISP)典型应用线路图 (17)1.7 STC12C5A60S2系列管脚说明 (19)1.8 STC12C5A60S2系列单片机封装尺寸图 (22)1.9 STC12C5A60S2系列单片机命名规则 (27)1.10 每个单片机具有全球唯一身份证号码(ID号) (28)1.11 如何从传统8051单片机过渡到STC12C5A60S2系列单片机 (31)第2章时钟,省电模式及复位 (35)2.1 STC12C5A60S2系列单片机的时钟 (35)2.1.1 STC12C5A60S2系列单片机内部/外部工作时钟可选 (35)2.1.2 时钟分频及分频寄存器 (36)2.1.3 如何知道单片机内部R/C振荡频率(内部时钟频率) (37)2.1.4 可编程时钟输出 (40)2.2 STC12C5A60S2系列单片机的省电模式 (45)2.2.1 低速模式 (47)2.2.2 空闲模式 (48)2.2.3 掉电模式/停机模式 (48)2.3 复位 (54)2.3.1 外部RST引脚复位(第一复位功能脚) (54)2.3.2 外部低压检测复位(高可靠复位,新增第二复位功能脚RST2复位) (54)2.3.3 外部低压检测若不作第二复位功能时,可作外部低压检测中断 (56)2.3.4 软件复位 (60)2.3.5 上电复位/掉电复位 (60)2.3.6 MAX810专用复位电路 (61)2.3.7 看门狗(WDT)复位 (61)2.3.8 冷启动复位和热启动复位 (65)第3章片内存储器和特殊功能寄存器(SFRs) (66)3.1 程序存储器 (66)3.2 数据存储器(SRAM) (67)3.2.1 内部RAM (67)3.2.2 内部扩展RAM (69)3.2.3 外部扩展的64KB数据存储器(片外RAM) (77)3.3 特殊功能寄存器(SFRs) (80)第4章.STC12C5A60S2系列单片机的I/O口结构 (87)4.1 I/O口各种不同的工作模式及配置介绍 (87)4.2 STC12C5A60S2系列单片机P4/P5口的使用 (92)4.3 I/O口各种不同的工作模式结构框图 (94)4.3.1 准双向口输出配置 (94)4.3.2 强推挽输出配置 (95)4.3.3 仅为输入(高阻)配置 (95)4.3.4 开漏输出配置(若外�上拉电阻,也可读) (95)4.4 一种典型三极管控制电路 (97)4.5 典型发光二极管控制电路 (97)4.6 混合电压供电系统3V/5V器件I/O口互连 (97)4.7 如何让I/O口上电复位时为低电平 (98)4.8 PWM输出时I/O口的状态 (99)4.9 I/O口直接驱动LED数码管应用线路图 (100)4.10 I/O口直接驱动LCD应用线路图 (101)4.11 A/D做按键扫描应用线路图 (102)第5章.指令系统 (103)5.1 寻址方式 (103)5.1.1 立即寻址 (103)5.1.2 直接寻址 (103)5.1.3 间接寻址 (103)5.1.4 寄存器寻址 (104)5.1.5 相对寻址 (104)5.1.6 变址寻址 (104)5.1.7 位寻址 (104)5.2 指令系统分类总结 (105)5.3 传统8051单片机的指令定义 (110)第6章.中断系统 (147)6.1 中断结构 (149)6.2 中断寄存器 (151)6.3 中断优先级 (159)6.4 中断处理 (160)6.5 外部中断 (161)6.6 中断测试程序(C程序及汇编程序) (162)6.6.1 外部中断0(INT0)的测试程序(C程序及汇编程序) (162)6.6.2 外部中断1(INT1)的测试程序(C程序及汇编程序) (166)6.6.3 P3.4/T0/INT下降沿中断(可用于唤醒掉电模式)的测试程序 (170)6.6.4 P3.5/T1/INT下降沿中断(可用于唤醒掉电模式)的测试程序 (172)6.6.5 P3.0/RxD/INT下降沿中断(可用于唤醒掉电模式)的测试程序 (174)—— C程序及汇编程序 (174)6.6.6 低压检测LVD中断(可用于唤醒掉电模式)的测试程序 (177)6.6.7 PCA模块中断(可用于唤醒掉电模式)的测试程序 (180)第7章.定时器/计数器 (184)7.1 定时器/计数器的相关寄存器 (184)7.2 定时器/计数器0工作模式(与传统8051单片机兼容) (189)7.2.1 模式0(13位定时器/计数器) (189)7.2.2 模式1(16位定时器/计数器)及测试程序 (190)7.2.3 模式2(8位自动重装模式) (194)7.2.4 模式3(两个8位计数器) (197)7.3 定时器/计数器1工作模式(与传统8051单片机兼容) (198)7.3.1 模式0(13位定时器/计数器) (198)7.3.2 模式1(16位定时器/计数器) (199)7.3.3 模式2(8位自动重装模式) (203)7.4 可编程时钟输出及测试程序(C程序和汇编程序) (206)7.4.1 定时器0的可编程时钟输出的测试程序 (209)7.4.2 定时器1的可编程时钟输出的测试程序 (211)7.4.3 独立波特率发生器的可编程时钟输出的测试程序 (213)7.5 古老Intel 8051单片机定时器0/1的应用举例 (215)7.6 如何将定时器T0/T1的速度提高12倍 (222)第8章.串行口通信 (223)8.1 串行口1的相关寄存器 (223)8.2 串行口1工作模式 (229)8.2.1 串行口1工作模式0:同步移位寄存器 (229)8.2.2 串行口1工作模式1:8位UART,波特率可变 (231)8.2.3 串行口1工作模式2:9位UART,波特率固定 (233)8.2.4 串行口1工作模式3:9位UART,波特率可变 (235)8.3 串行通信中波特率的设置 (237)8.4 串行口1的测试程序 (242)8.5 串行口2的相关寄存器 (248)8.6 串行口2工作模式 (254)8.7 串行口2的测试程序 (256)8.8 双机通信 (262)8.9 多机通信 (273)第9章.STC12C5A60S2系列单片机的A/D转换器 (279)9.1 A/D转换器的结构 (279)9.2 与A/D转换相关的寄存器 (281)9.3 A/D转换典型应用线路 (286)9.4 A/D做按键扫描应用线路图 (287)9.5 A/D转换模块的参考电压源 (288)9.6 A/D转换测试程序(C程序和汇编程序) (289)9.6.1 A/D转换测试程序(ADC中断方式) (289)9.6.2 A/D转换测试程序(ADC查询方式) (295)第10章.STC12C5A60S2系列单片机PCA/PWM应用 (301)10.1 与PCA/PWM应用有关的特殊功能寄存器 (301)10.2 PCA/PWM模块的结构 (307)10.3 PCA模块的工作模式 (309)10.3.1 捕获模式 (309)10.3.2 16位软件定时器模式 (310)10.3.3 高速输出模式 (311)10.3.4 脉宽调节模式(PWM) (312)10.4 用PCA功能扩展外部中断的示例程序(C程序和汇编程序) (314)10.5 用PCA功能实现定时器的示例程序(C程序和汇编程序) (318)10.6 PCA输出高速脉冲的示例程序(C程序和汇编程序) (322)10.7 PCA输出PWM的示例程序(C程序和汇编程序) (326)10.8 利用PWM实现D/A功能的典型应用线路图 (330)第11章.同步串行外围接口(SPI接口) (331)11.1 与SPI功能模块相关的特殊功能寄存器 (331)11.2 SPI接口的结构 (334)11.3 SPI接口的数据通信 (335)11.3.1 SPI接口的数据通信方式 (336)11.3.2 对SPI进行配置 (338)11.3.3 作为主机/从机时的额外注意事项 (339)11.3.4 通过SS改变模式 (340)11.3.5 写冲突 (340)11.3.6 数据模式 (341)11.4 适用单主单从系统的SPI功能测试程序 (343)11.4.1 中断方式 (343)11.4.2 查询方式 (349)11.5 适用互为主从系统的SPI功能测试程序 (355)11.5.1 中断方式 (355)11.5.2 查询方式 (361)第12章.STC12C5A60S2系列单片机EEPROM的应用 (367)12.1 IAP及EEPROM新增特殊功能寄存器介绍 (367)12.2 STC12C5A60S2系列单片机EEPROM空间大小及地址 (371)12.3 IAP及EEPROM汇编简介 (373)12.4 EEPROM测试程序 (377)第13章.STC12系列单片机开发/编程工具说明 (385)13.1 在系统可编程(ISP)原理,官方演示工具使用说明 (385)13.1.1 在系统可编程(ISP)原理使用说明 (385)13.1.2 STC12C5A60S2系列在系统可编程(ISP)典型应用线路图 (386)13.1.3 电脑端的ISP控制软件界面使用说明 (388)13.1.4 宏晶科技的ISP下载编程工具硬件使用说明 (390)13.1.5 若无RS-232转换器,如何用宏晶的ISP下载板做RS-232通信转换 (391)13.2 编译器/汇编器,编程器,仿真器 (392)13.3 自定义下载演示程序(实现不停电下载) (394)7STC12C5A60S2系列 1T 8051 单片机中文指南全球最大的8051单片机设计公司S T C M C U L i m i t e d .临时技术支持:139********授权代理:南通国芯微电子有限公司总机:0513-5501 2928 / 2929 / 2966传真:0513-5501 2969 / 2956 / 2947附录A :汇编语言编程...................................398附录B :C 语言编程......................................420附录C :STC12C5A60S2系列单片机电气特性...............430附录D :内部常规256字节RAM 间接寻址测试程序...........432附录E :用串口扩展I/O 接口..............................434附录F :利用STC 单片机普通I/O 驱动LCD 显示..............437附录G :一个I/O 口驱动发光二极管并扫描按键..............444附录H :如何利用Keil C 软件减少代码长度.................445附录I :STC12系列单片机取代传统8051注意事项............446附录J :如何采购和授权分销机构.........................450J.1 如何采购 ................................................450J.2 授权分销机构 ............................................451附录K :每日更新内容的备忘录...........................453附录L :以下是各系列的选型指南. (454)L.1 STC15F828EACS 系列选型指南(2011年5月开始送样) ..........454L.2 STC15F204EA 系列选型指南 ...............................454L.3 STC12C5A60S2系列选型指南 ..............................454L.4 STC11/10xx 系列选型指南 .................................454L.5 STC12C5201AD 系列选型指南 ..............................454L.6 STC12C5620AD 系列选型指南 ..............................454L.7 STC12C5410AD 系列选型指南 ..............................454L.8 STC12C2052AD 系列选型指南 ..............................454L.9 STC89C51/STC90C51系列选型指南 . (454)8STC12C5A60S2系列 1T 8051 单片机中文指南全球最大的8051单片机设计公司临时技术支持:139********S T C M C U L i mi t e d .授权代理:南通国芯微电子有限公司总机:0513-5501 2928 / 2929 / 2966传真:0513-5501 2969 / 2956 / 2947第1章 STC12C5A60S2系列单片机总体介绍1.1.STC12C5A60S2系列单片机简介STC12C5A60S2/AD/PWM 系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超�抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12 倍。

STC12C5A60S2教程

STC12C5A60S2教程

特殊单元
0003H 外部中断0中断服务程序的入口地址 000BH 定时/计数器0中断服务程序的入口地址 0013H 外部中断1中断服务程序的入口地址 001BH 定时/计数器1中断服务程序的入口地址 0023H 串行通信口1中断服务程序的入口地址 002BH ADC中断服务程序的入口地址 0033H 低电压检测中断服务程序的入口地址 003BH PCA中断服务程序的入口地址 0043H 串行通信口2中断服务程序的入口地址 004BH SPI中断服务程序的入口地址 读取程序存储器中保存的表格常数等内容时,使用MOVC指令。
0592mhz电容c1c2的典型值是47pfxtal1gnd22stc12c5a60s222stc12c5a60s2单片机的结构单片机的结构221stc12c5a60s2221stc12c5a60s2单片机的内部结构单片机的内部结构ram地址寄存器ram电源监控上电复位上电复位掉电复位可配置io口p0p4可配置io口p5程序flash程序地址寄存器缓冲器堆栈指针pc增量器pcpcb寄存器acctmp2tmp11k字节eepomrstale定时和控制逻辑片内rc振荡器dptr硬件看门狗wdt8通道高速adspi2路pwmpcaccu捕获比较单元指令寄存器可配置振荡器alupsw中断uart定时器逻辑xtal1xtal2cpu时钟222cpu以8位算术逻辑运算部件alu为核心加上通过内部总线而挂在其周围的暂存器tmp1tmp2累加器acc寄存器b程序状态标志寄存器psw以及布尔处理机就组成了整个运算器的逻辑电路
FFH 特殊功能寄存器区(80H~FFH) ~ [只能直接寻址访问] 80H 7FH 通用用户RAM和堆栈区(30H~7FH) ~ 30H [可直接或间接字节寻址] 2FH 位寻址区(16字节,共128位) ~ 也可以字节寻址 20H 1FH~ 18H 3区(R7~R0) 2区(R7~R0) 17H~ 10H 4个工作寄存器区 也可做RAM单元使用 0FH~ 08H 1区(R7~R0) 07H~ 00H 0区(R7~R0) 80H~ FFH [只能间接寻址访问 ]

STC12C5A60S2单片机寄存器头文件

STC12C5A60S2单片机寄存器头文件

STC12C5A60S2单片机寄存器头文件STC12C5A.H内容/**************** 8051内核特殊功能寄存器******************/sfr ACC = 0xE0; //累加器sfr B = 0xF0; //B寄存器sfr PSW = 0xD0; //程序状态字寄存器sbit CY = PSW^7; //进位标志位sbit AC = PSW^6; //辅助进位标志位sbit F0 = PSW^5; //用户标志位0sbit RS1 = PSW^4; //工作寄存器组选择控制位sbit RS0 = PSW^3; //工作寄存器组选择控制位sbit OV = PSW^2; //溢出标志位sbit F1 = PSW^1; //用户标志位1sbit P = PSW^0; //奇偶标志位sfr SP = 0x81; //堆栈指针寄存器sfr DPL = 0x82; //数据指针0低字节sfr DPH = 0x83; //数据指针0高字节/**************** 系统管理特殊功能寄存器******************/sfr PCON = 0x87; //电源控制寄存器sfr AUXR = 0x8E; //辅助寄存器sfr AUXR1 = 0xA2; //辅助寄存器1sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器sfr CLK_DIV = 0x97; //时钟分频控制寄存器sfr BUS_SPEED = 0xA1; //总线速度控制寄存器/**************** 中断控制特殊功能寄存器******************/sfr IE = 0xA8; //中断允许寄存器sbit EA = IE^7; //总中断允许位sbit ELVD = IE^6; //低电压检测中断控制位sbit EADC = IE^5; //ADC中断允许控制位sbit ES = IE^4; //串口1中断允许位sbit ET1 = IE^3; //定时器1溢出中断允许位sbit EX1 = IE^2; //外部中断1允许位sbit ET0 = IE^1; //定时器0溢出中断允许位sbit EX0 = IE^0; //外部中断0允许位sfr IE2 = 0xAF; //中断允许寄存器2sfr IP = 0xB8; //中断优先级寄存器sbit PPCA = IP^7; //PCA中断优先级控制位sbit PLVD = IP^6; //低电压检测中断优先级控制位sbit PADC = IP^5; // ADC中断优先级控制位sbit PS = IP^4; //串口1中断优先级控制位sbit PT1 = IP^3; //定时器1中断优先级控制位sbit PX1 = IP^2; //外部中断1优先级控制位sbit PT0 = IP^1; //定时器0中断优先级控制位sbit PX0 = IP^0; //外部中断0优先级控制位sfr IPH = 0xB7; //中断优先级高位寄存器sfr IP2 = 0xB5; //第二中断优先级寄存器低字节sfr IPH2 = 0xB6; //第二中断优先级寄存器高字节/**************** I/O口特殊功能寄存器******************/sfr P0 = 0x80; //P0口寄存器sfr P0M1 = 0x93; //P0口工作模式寄存器1sfr P0M0 = 0x94; //P0口工作模式寄存器0sfr P1 = 0x90; //P1口寄存器sfr P1M1 = 0x91; //P1口工作模式寄存器1sfr P1M0 = 0x92; //P1口工作模式寄存器0sfr P1ASF = 0x9D; //P1口模拟量功能设置寄存器sfr P2 = 0xA0; //P2口寄存器sfr P2M1 = 0x95; //P2口工作模式寄存器1sfr P2M0 = 0x96; //P2口工作模式寄存器0sfr P3 = 0xB0; //P3口寄存器sbit T1 = P3^5; //定时器1外部输入sbit T0 = P3^4; //定时器0外部输入sbit INT1 = P3^3; //外部中断1sbit INT0 = P3^2; //外部中断0sbit TXD = P3^1; //串行输入通道sbit RXD = P3^0; //串行输出通道sfr P3M1 = 0XB1; //P3口工作模式寄存器1sfr P3M0 = 0xB2; //P3口工作模式寄存器0sfr P4 = 0xC0; //P4口寄存器sfr P4M1 = 0xB3; //P4口工作模式寄存器1sfr P4M0 = 0xB4; //P4口工作模式寄存器0sfr P4SW = 0xBB; //P4口功能切换寄存器sfr P5 = 0xC8; //P5口(只有P5.3、P5.2、P5.1、P5.0)sfr P5M1 = 0xC9; //P5口工作模式寄存器1sfr P5M0 = 0xCA; //P5口工作模式寄存器0/**************** 定时器特殊功能寄存器******************/sfr TCON = 0x88; //定时/计数控制寄存器sbit TF1 = TCON^7; //定时器1溢出中断标志sbit TR1 = TCON^6; //定时器1运行控制位sbit TF0 = TCON^5; //定时器0溢出中断标志sbit TR0 = TCON^4; //定时器0运行控制位sbit IE1 = TCON^3; //外部中断1请求标志sbit IT1 = TCON^2; //选择外部中断请求1为边沿触发方式的控制位sbit IE0 = TCON^1; //外部中断0请求标志sbit IT0 = TCON^0; //选择外部中断请求0为边沿触发方式的控制位sfr TMOD = 0x89; //定时/计数模式控制寄存器sfr TL0 = 0x8A; //定时/计数器0低字节sfr TH0 = 0x8C; //定时/计数器0高字节sfr TL1 = 0x8B; //定时/计数器1低字节sfr TH1 = 0x8D; //定时/计数器1高字节/**************** 串行口特殊功能寄存器******************/sfr SCON = 0x98; //串行口控制寄存器sbit SM0 = SCON^7; //串行口工作方式设定控制位0(与FE功能复用)sbit FE = SCON^7;sbit SM1 = SCON^6; //串行口工作方式设定控制位1sbit SM2 = SCON^5; //UART的SM2设定sbit REN = SCON^4; //接收允许位sbit TB8 = SCON^3; //发送数据的第九位sbit RB8 = SCON^2; //接收数据的第九位sbit TI = SCON^1; //发送中断标志sbit RI = SCON^0; //接收中断标志sfr SBUF = 0x99; //串口数据缓冲器sfr SADEN = 0xB9; //从机地址掩码寄存器sfr SADDR = 0xA9; //从机地址寄存器sfr S2CON = 0x9A; //串行口2控制寄存器sfr S2BUF = 0x9B; //串行口2数据缓冲器sfr BRT = 0x9C; //独立波特率定时器/**************** 看门狗定时器寄存器******************/sfr WDT_CONTR = 0xC1; //看门狗定时器控制寄存器/******************** PCA寄存器**********************/sfr CCON = 0xD8; //PCA控制寄存器sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFF变为0000H)标志sbit CR = CCON^6; //PCA计数器计数允许控制位sbit CCF1 = CCON^1; //PCA模块1中断标志sbit CCF0 = CCON^0; //PCA模块0中断标志sfr CMOD = 0xD9; //PCA 工作模式寄存器sfr CL = 0xE9; //PCA 计数器低8位sfr CH = 0xF9; //PCA 计数器高8位sfr CCAPM0 = 0xDA; //PCA 模块0的工作模式寄存器sfr CCAPM1 = 0xDB; //PCA 模块1的工作模式寄存器sfr CCAP0L = 0xEA; //PCA 模块0捕捉/比较寄存器低8位sfr CCAP0H = 0xFA; //PCA 模块0捕捉/比较寄存器高8位sfr CCAP1L = 0xEB; //PCA 模块1捕捉/比较寄存器低8位sfr CCAP1H = 0xFB; //PCA 模块1捕捉/比较寄存器高8位sfr PCA_PWM0 = 0xF2; //PCA 模块0 PWM寄存器sfr PCA_PWM1 = 0xF3; //PCA 模块1 PWM寄存器/******************** ADC寄存器**********************/sfr ADC_CONTR = 0xBC; //ADC控制寄存器,本寄存器不支持位操作sfr ADC_RES = 0xBD; //ADC转换结果高8位寄存器sfr ADC_RESL = 0xBE; //ADC转换结果低2位寄存器/******************** SPI寄存器**********************/sfr SPSTAT = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/***************** ISP_IAR_EEPROM寄存器*******************/sfr IAP_DATA = 0xC2; //ISP/IAP Flash数据寄存器sfr IAP_ADDRH = 0xC3; // ISP/IAP Flash地址高字节sfr IAP_ADDRL = 0xC4; // ISP/IAP Flash地址低字节sfr IAP_CMD = 0xC5; // ISP/IAP Flash命令寄存器sfr IAP_TRIG = 0xC6; // ISP/IAP Flash命令触发器sfr IAP_CONTR = 0xC7; //ISP/IAR控制寄存器。

74573锁存器 STC12c5a60s2 资料

74573引脚图三态总线驱动输出·置数全并行存取·缓冲控制输入·使能输入有改善抗扰度的滞后作用原理:74LS573 的八个锁存器都是透明的 D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。

当使能为低时,输出将锁存在已建立的数据电平上。

输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。

这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。

特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器引脚功能D0–D7:Data Inputs数据输入LE:Latch Enable Input (Active HIGH) 锁存使能输入(高电平有效)OE:3-STATE Output Enable Input (Active LOW) 3态输出使能输入(低电平有效)O0–O7:3-STATE Latch Outputs 3态锁存输出Operating Conditions 操作条件VCC :Supply Voltage 电源电压最小4.75V最大5.25VVIH :High Level Input Voltage输入高电平电压最小2VVIL:LOW Level Input Voltage 输入低电平电压最大0.8VIOH:HIGH Level Input Current输入高电平电流最大-2.6mAIOL:LOW Level Output Current低电平输出电流最大24mATA :Free Air Operating Temperature工作温度最大70摄氏度直流电气特性VI Input Clamp Voltage输入钳位电压VCC=最小, II=−18 mA - - −1.5 VVOH High Level OutputVoltage输出高电平电压VCC = 最小, IOH=最大,VIL = 最大 2.7 3.4 - VVOL Low Level OutputVoltage输出低电平电压VCC = 最小, IOL=最大- 0.35 0.5 - VIH = 最小- - - VIOL=4 mA, VCC=最小- - - -II Input Current @ 最大Input Voltage输入电压VCC=最大, VI=7V - - 1 mAIIH HIGH Level Input Current输入高电平电流VCC=最大, VI=2.7V - - 20 μAIIL LOW Level Input Current低电平输入电流VCC=最大, VI=0.4V - - −0.4 mAIOS Short CircuitOutput Current输出短路电流VCC=最大(Note 3) −30 - −130 mA -ICC Supply Current电源电流VCC=最大- - 50 mAIOZH 3-STATE Outputoff Current High 3态输出高阻态时高电平电流IOZL 3-STATE Outputoff Current Low 3态输出高阻态时低电平电流tPLH tPHL Propagation Delay传播延迟tPLH tPHL Propagation Delay传播延迟LE to Q - 36 25 ns tPZH tPZL 3-STATE Enable Time3态启用时间OE to Q - 20 25 nstPHZ tPLZ 3-STATE Enable Time3态启用时间OE to Q - 20 25 nsts(H)ts(L) Setup Time (High/Low) 设置时间(高/低)Data to LE 3 7 - nsth(H)th(L) Hold Time (High/Low)保持时间(高/低)Le Data to LE 10 10 - ns tw(H) - Pulse Width (High) 脉冲宽度(高)LeData to LE 15 - - ns看一下STC12C5A60S2系列1T单片机的功能就明白较89C51的优势了: 1.增强型8051 CPU,1T,单时钟/ 机器周期,指令代码完全兼容传统8051 2.工作电压:STC12C5A60S2 系列工作电压:5.5V - 3.3V STC12LE5A60S2 系列工作电压:3.6V - 2.2V 3. 工作频率范围:0 - 35MHz,相当于普通8051 的0~420MHz 4. 用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字节...... 5. 片上集成1280 字节RAM 6. 通用I/O 口(36/40/44 个),复位后为:准双向口/ 弱上拉(普通8051 传统I/O 口)可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏每个I/O 口驱动能力均可达到20mA,但整个芯片最大不要超过120mA 7. I S P(在系统可编程)/IAP (在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片8. 有EEPROM 功能(STC12C5A62S2/AD/PWM 无内部EEPROM) 9. 看门狗10.内部集成MAX810 专用复位电路(外部晶体12M 以下时,复位脚可直接1K 电阻到地)11. 外部掉电检测电路: 在P4.6 口有一个低压门槛比较器5V 单片机为1.32V,误差为+/-5%,3.3V 单片机为1.30V,误差为+/-3% 12. 时钟源:外部高精度晶体/ 时钟,内部R/C 振荡器(温漂为+/-5% 到+/-10% 以内) 用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟常温下内部R/C 振荡器频率为:5.0V 单片机为:11MHz ~15.5MHz 3.3V 单片机为:8MHz ~12MHz 精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准13. 共4 个16 位定时器:两个与传统8051 兼容的定时器/ 计数器,16 位定时器T0 和T1,没有定时器2,但有独立波特率发生器,做串行通讯的波特率发生器,再加上2 路PCA 模块可再实现2 个16 位定时器14. 2 个时钟输出口,可由T0 的溢出在P3.4/T0 输出时钟,可由T1 的溢出在P3.5/T1 输出时钟15. 外部中断I/O 口7 路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA 模块,Power Down 模式可由外部中断唤醒,INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5, RxD/P3.0, CCP0/P1.3(也可通过寄存器设置到P4.2 ), CCP1/P1.4 (也可通过寄存器设置到P4.3) 16. PWM(2 路)/PCA(可编程计数器阵列,2 路)--- 也可用来当2 路D/A 使用--- 也可用来再实现2 个定时器--- 也可用来再实现2 个外部中断(上升沿中断/ 下降沿中断均可分别或同时支持) 17. A/D 转换, 10 位精度ADC,共8 路,转换速度可达250K/S(每秒钟25 万次) 18. 通用全双工异步串行口(UART),由于STC12 系列是高速的8051,可再用定时器或PCA 软件实现多串口19. STC12C5A60S2 系列有双串口,后缀有S2 标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3) 20. 工作温度范围:-40 - +85℃(工业级) / 0 - 75℃(商业级) 21. 封装:PDIP-40,LQFP-44,LQFP-48 I/O 口不够时,可用 2 到 3 根普通I/O 口线外接74HC164/165/595(均可级联)来扩展I/O 口,还可用A/D 做按键扫描来节省I/O 口,或用双CPU,三线通信,还多了串口。

STC12C5A60S2系列单片机特殊功能寄存器名称及映像


0000 0000B 0000 0000B 0000 0000B EPC0H EPC0L **** **00B EPC1H EPC1L **** **00B 0000 0000B 0000 0000B 0000 0000B
P2.3 GF2 ET1 P3.3
P2.2 RWS2 ADRJ EX1 P3.2
PPCAH PLVDH PADCH PCA PLVD PADCPSH PS
PT1H PT1
PX1H PX1
ADC_POWER
LVD_P4.6 ALE_P4.5 NA_P4.4
-
SPEED SPEED
ADC_FLAG ADC_START
BBH BCH BDH BEH C0H C1H C2H IAP_ADDRH ISP/IAP高8位地址寄存器 C3H IAP_ADDRL ISP/IAP低8位地址寄存器 C4H IAP_CMD ISP/IAP命令寄存器 C5H IAP_TRIG ISP/IAP命令触发寄存器 C6H IAP_CONT ISP/IAP控制寄存器 C7H P5 Port 5 C8H P5M1 P5口模式配置寄存器1 C9H P5M0 P5口模式配置寄存器0 CAH SPSTAT SPI状态寄存器 CDH SPCTL SPI控制寄存器 CEH SPDAT SPI数据寄存器 CFH PSW 程序状态字寄存器 D0H CCON PCA控制寄存器 D8H CMOD PCA模式寄存器 D9H PCA Module 0 Mode Register CCAPM0 DAH CCAPM1 PCA Module 1 Mode Register DBH ACC 累加器 E0H CL PCA Base Timer Low E9H
S2SM0 S2SM1 S2SM2 S2REN S2TB8 S2RB8

stc12c5a60s2单片机pwm应用

1.PCA工作模式寄存器CMODPCA工作模式寄存器的格式如下:CMOD:PCA工作模式寄存器CIDL:空闲模式下是否停止PCA计数的控制位当CIDL=0时,空闲模式下PCA计数器继续工作;当CIDL=1时,空闲模式下PCA计数器停止工作;CPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。

PCA计数脉冲选择如下表所示:例如,CPS2/CPS1/CPS0=1/0/0时,PCA/PWM的时钟源是SYSclk,不是定时器0,PWM 的频率为SYSclk/265如果要用系统时钟/3来作为PCA的时钟源,应让T0工作在1T模式,计数3个脉冲即产生溢出。

如果此时使用内部RC作为系统时钟(室温情况下,5V单片机为11MHZ~15.5MHZ),可以输出14K~19K频率的PWM。

用T0的溢出可对系统时钟进行1~256级分频。

ECF:PCA计数溢出中断使能位。

当ECF=0时,禁止寄存器CCON中CF位的中断;当ECF=1时,允许寄存器CCON中CF位的中断。

2. 2. PCA控制寄存器CCONPCA控制寄存器的格式如下:CCON:PAC控制寄存器CF:PCA计数阵列溢出标志位。

当PCA计数器溢出时,CF由硬件位置。

如果CMOD 寄存器的ECF位置位,则CF标志可用来产生中断。

CF位可通过硬件或软件置位,但通过软件清零。

CR:PCA计数阵列运行控制位。

该位通过软件置位,用来起动PCA计数器阵列计数。

该位通过软件清零,用来关闭PCA计数器。

CCF1:PCA模块1中断标志。

当出现匹配或捕获时该位由硬件置位。

该位必须通过软件清零。

CCF0:PCA模块0中断标志。

当出现匹配或捕获时该位由硬件置位。

该位必须通过软件清零。

3. 3.PCA比较/捕获寄存器CCAPM0和CCAPM1PCA模块0的比较/捕获寄存器的格式如下:CCAPM0:PCA模块0的比较/捕获寄存器B7:保留位将来之用。

ECOM0:允许比较器功能控制位。

STC12C5A60S2 SPI接口模块主机部分

flag = 0;
}
}
}
//***********************************//
//* 名称:SPI_ISR()
//* 功能: SPI中断服务
//* 输入:无
//* 输出:无
//***********************************//
//波特率为2400 //波特率为28800
//波特率为4800 //波特率为38400
//波特率为9600 //波特率为57600
//波特率为14400 //波特率为115200
//波特率为19200
void UART_init(void);
uchar Receive(void);
void Printf( uchar *p )
{
while( *p != '\0' )
{
Send_byte(*p);
p++;
}
}
//************************************************//
SCON = 0x50;
#if( BTL == 2400 )
BRT = 0x70; //波特率设置为9600
#elif( BTL == 4800 )
BRT = 0xB8;
#elif( BTL == 9600 )
BRT = 0xDC;
#elif( BTL == 14400 )
//* 名称:Init_SPI()
//* 功能: 对SPI进行初始化
//* 输入:无
//* 输出:无
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0000 0000B MS0 **** **00B
**** ****B
WT0 0000 *000B P5.0 **** 1111B
**** 0000B **** 0000B - 00** ****B SPR0 0000 0100B 0000 0000B P 0000 0000B CCF0 00** **00B ECF 0*** 0000B ECCF0 *000 0000B
IAP_ADDR H
ISP/IAP高8位地址寄存 器
C3H
IAP_ADDR L
ISP/IAP低8位地址寄存 器
C4H
IAP_CMD ISP/IAP命令寄存器 C5H -
-
-
-
-
- MS1
IAP_TRIG
ISP/IAP命令触发寄存 器
C6H
IAP_CONT R
ISP/IAP控制寄存器
C7H IAPEN
BRT
独立波特率发生器寄存 器
9CH
P1ASF P2
P1 Analog Function Configure register
Port 2
9DH
P17AS F
P16AS F
P15AS F
P14AS F
P13AS F
P12AS F
P11AS F
A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1
SWBS
SWRST
CMD_F AIL
-
WT2 WT1
P5
Port 5
C8H -
-
-
- P5.3 P5.2 P5.1
P5M1 P5口模式配置寄存器1 C9H
P5M0 P5口模式配置寄存器0 CAH
SPSTAT
SPI状态寄存器
CDH SPIF WCOL -
-
-
-
-
SPCTL
SPI控制寄存器
CEH SSIG SPEN DORD MSTR CPOL CAPHA SPR1
SADEN 从机地址掩模寄存器 B9H
P4SW
Port-4 switch
BBH
-
LVD_P ALE_P NA_P4 4.6 4.5 .4
-
-
-
ADC_CONT R
A/D转换控制寄存器
BCH
ADC_P SPEED SPEED ADC_F ADC_S
OWER 1
0 LAG TART
CHS2
CHS1
ADC_RES A/D转换结果寄存器高 BDH
P1.0 1111 1111B
0000 0000B
0000 0000B
0000 0000B
0000 0000B
0000 0000B
0000 0000B
CLKS0 **** *000B
RI 0000 0000B
**** ****B
S2RI 0000 0000B
0000 0000B
0000 0000B
P10AS F
SPDAT
SPI数据寄存器
CFH
PSW
程序状态字寄存器 D0H CY AC F0 RS1 RS0 OV F1
CCON
PCA控制寄存器
D8H CF CR
-
-
-
- CCF1
CMOD
PCA模式寄存器
D9H CIDL -
-
- CPS2 CPS1 CPS0
CCAPM0
PCA Module 0 Mode Register
IP2
第二中断优先级低字节 寄存器
B5H
-
-
-
-
-
- PSPI
IP2H
第二中断优先级高字节 寄存器
B6H
-
-
-
-
-
- PSPIH
IPH
中断优先级高字节寄存 器
B7H
PPCAH
PLVDH
PADCH
PSH
PT1H PX1H PT0H
IP
中断优先级寄存器 B8H PPCA PLVD PADC PS PT1 PX1 PT0
0000
0000B
P2.0 1111 1111B
RWS0 **10 *011B
DPS *000 00*0B
EX0 0000 0000B
0000 0000B
ES2 **** **00B
P3.0 1111 1111B
0000 0000B 0000 0000B 0000 0000B 0000 0000B PS2 **** **00B
BUS_SPEE Bus-Speed Control A1H -
- ALES1 ALES0 - RWS2 RWS1
AUXR1
辅助寄存器1
A2H - PCA_P SPI_P S2_P4 GF2 ADRJ -
IE
中断允许寄存器 A8H EA ELVD EADC ES ET1 EX1 ET0
SADDR 从机地址控制寄存器 A9H
PSP2H **** **00B
PX0H 0000 0000B PX0 0000 0000B
0000 0000B - *000 ****B
CHS0 0000 0000B 0000 0000B 0000 0000B
P4.0 1111 1111B PS0 0*00 0000B
1111 1111B 0000 0000B
EAH
CCAP1L
PCA Module-1 Capture Register Low
EBH
B
B寄存器
F0H
PCA_PWM0
PCA PWM Mode Auxiliary Register 0
F2H
-
-
-
-
-
- EPC0H
PCA_PWM1
PCA PWM Mode Auxiliary Register 1
Port 1
90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1
P1口模式配置寄存器1 91H
P1M0 P0M1
P1口模式配置寄存器0 92H P0口模式配置寄存器1 93H
P0M0 P0口模式配置寄存器0 94H
P2M1 P2M0
P2口模式配置寄存器1 95H P2口模式配置寄存器0 96H
AUXR
辅助寄存器
8EH
T0x12
T1x12
UART_ M0x6
BRTR
S2SMO BRTx1 EXTRA
D
2
M
WAKE_CLK 掉电唤醒和时钟输出寄
O
存器
8FH
PCAWA KEUP
RXD_P IN_IE
T1_PI N_IE
T0_PI N_IE
LVD_W AKE
BRTCL KO
T1CLK O
P1 P1M1
TCON 定时器控制器寄存器 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0
TMOD 定时器工作方式寄存器 89H GATE C/T M1 M0 GATE C/T M1
TL0 定时器0低8位寄存器 8AH
TL1 定时器1低8位寄存器 8BH
TH0 定时器0高8位寄存器 8CH
TH1 定时器1高8位寄存器 8DH
0000 0111B 0000 0000B 0000 0000B IDL 0011 0000B IT0 0000 0000B M0 0000 0000B 0000 0000B 0000 0000B 0000 0000B 0000 0000B
S1BRS 0000 0000B
T0CLK O
0000
0000B
CLK_DIV SCON
时钟分频寄存器 串口1控制寄存器
97H -
-
-
-
- CLKS2 CLKS1
98H CM0/F SM1 SM2 REN TB8 RB8 TI
SBUF
串口1数据缓冲器 99H
S2CON S2BUF
串口2控制寄存器 S2SM2 S2REN S2TB8 S2RB8 S2TI 9BH
IE2
中断允许寄存器 AFH -
-
-
-
-
- ESPI
P3
Port 3
B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1
P3M1 P3口模式配置寄存器1 B1H
P3M0 P3口模式配置寄存器0 B2H
P4M1 P4口模式配置寄存器1 B3H
P4M0 P4口模式配置寄存器0 B4H
ECCF1 *000 0000B
0000 0000B 0000 0000B 0000 0000B
0000 0000B 0000 0000B EPC0L **** **00B
EPC1L **** **00B 0000 0000B 0000 0000B
0000 0000B
DAH
-
ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0
CCAPM1
PCA Module 1 Mode Register
DBH
-
ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1
ACC
累加器
E0H
CL
PCA Base Timer Low E9H
CCAP0L
PCA Module-0 Capture Register Low
F3H
-
-
-
-
-
- EPC1H
CH PCA Base Timeer High F9H
CCAP0H
PCA Module-0 Capture Register High
相关文档
最新文档