STC89C52RC头文件

合集下载

STC89C52RC串口程序下载步骤说明以及实验板初次操作指南

STC89C52RC串口程序下载步骤说明以及实验板初次操作指南

STC89C52RC串⼝程序下载步骤说明以及实验板初次操作指南STC89C52RC串⼝程序下载步骤说明以及实验板初次操作指南初次操作指南:拿到板⼦以后,拆开包装,按下⾯的步骤插好下⾯4个东西1. 插stc89c52单⽚机(缺⼝⽅向朝数码管),2. 插晶振(位置在电源开关的左上⽅,请看⼤图,有3个孔,但是只插两侧的两个孔,中间留空),3. 插9针串⼝线(⼀头连电脑串⼝⼀头连接实验板),4. 插usb电源线(注意:usb线要最后插⼊,并且最好是插电脑的后置usb接⼝,并且此时不要打开板⼦上的电源开关,如果发现电源指⽰灯亮了请关掉板⼦上的电源开关)下载烧录程序使⽤说明:简单的说就是1.关掉实验板的电源开关2.运⾏STC-ISP V391.exe(位置在“STC-ISP下载编程软件”这个⽬录⾥)3.选择单⽚机类型为stc89c524.点击“打开⽂件”按钮(选择⼀个hex⽂件,建议选”流⽔灯.hex”,位置:“例1-LED流⽔灯”⽬录⾥)5.点击“DownLoad下载”按钮(这时候软件会提⽰“请给 MCU 上电..”,这就对了,否则请换⼀个有效的串⼝),6.打开实验板的电源开关当你打开实验板电源开关的⼀瞬间你会发现软件下⾯的⽩框提⽰下载信息了,这样就是ok了,恭喜你,烧写成功了,实验板开始了流⽔灯。

但是不要⾼兴得太早,请务必查看本⽂最后的关于⾼级功能:如果第⼀次下载失败请看下⾯的详细说明,⼀步⼀步的指导您。

以下是烧录程序的主要界⾯。

烧录过程⾮常简单,操作也⾮常简单。

图中红⾊的步,)。

启动本烧录程序STC-ISP V391.exe后(在stc-isp下载编程软件.rar⾥⾯),第⼀步就是选择烧录器件。

本烧录软件⽀持STC 全系列的51 单⽚机芯⽚,因此,第⼀步必须选择相对应的型号另外,“AP Memory”是指该芯⽚的内存⼤⼩和起⽌地址根据器件型号⾃动更改,不必理会。

选择了器件型号,第⼆步就应该选择将要被烧录的HEX 机器码⽂件。

stc89c52rc中文资料_数据手册_参数

stc89c52rc中文资料_数据手册_参数

在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是 FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串 口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。 STC12C5A60S2特点 STC12C5A60S2是8051系列单片机,与普通51单片机相比有以下特点: 1、同样晶振的情况下,速度是普通51的8~12倍 2、有8路10位AD 3、多了两个定时器,带PWM功能 4、有SPI接口 5、有EEPROM 6、有1K内部扩展RAM 7、有WATCH_DOG 8、多一个串口 9、IO口可以定义,有四种状态 10、中断优先级有四种状态可定义 VCC:供电电压; GND:接地; P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P0口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它 可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高 ;P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口 被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收; P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输 入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取 时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内 容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;

STC89C52RC单片机手册

STC89C52RC单片机手册

STC89C52单片机用户手册[键入作者姓名][选取日期]STC89C52R单片机介绍STC89C52R单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和 6 时钟/机器周期可以任意选择。

主要特性如下:1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2. 工作电压:5.5V〜3.3V (5V单片机)/3.8V〜2.0V (3V单片机)3. 工作频率范围:0〜40MHz相当于普通8051的0〜80MHz实际工作频率可达48MHz4. 用户应用程序空间为8K 字节5. 片上集成512字节RAM6. 通用I/O 口(32 个),复位后为:P1/P2/P3/P4 是准双向口/ 弱上拉,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。

7. ISP (在系统可编程)/IAP (在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1 )直接下载用户程序,数秒即可完成一片8. 具有EEPRO功能9. 具有看门狗功能10. 共3个16位定时器/计数器。

即定时器T0、T1、T211. 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12. 通用异步串行口(UART,还可用定时器软件实现多个UART13. 工作温度范围:-40〜+85C(工业级)/0〜75C(商业级)14. PDIP封装STC89C52R单片机的工作模式掉电模式:典型功耗<0.1卩A,可由外部中断唤醒,中断返回后,继续执行原程序空闲模式:典型功耗2mA 正常工作模式:典型功耗4Mr 7mA掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52R 引脚图STC89C52RC 脚功能说明VCC (40弓I 脚):电源电压 VSS (20弓I 脚):接地P0端口( P0.0〜P0.7, 39〜32引脚):P0 口是一个漏极开路的8位双向I/O 口。

基于单片机STC89C52RC的交通灯

基于单片机STC89C52RC的交通灯

基于单片机STC89C52RC的交通灯摘要:本交通灯系统采用STC89C52RC作为核心控制器,控制红绿黄三盏灯,来达到模拟日常交通灯系统,其中倒计时时间通过1602显示出来。

关键词:交通灯1602液晶一、设计方案整个模拟交通灯系统用单片机STC89C52RC作为核心控制器,有序的控制着红黄绿三盏灯的运行,实际交通灯系统所需的倒计时时间采用1602显示出来,并且其倒计时时间可通过独立式键盘进行调整。

系统框图二、主程序流程图三、附录------源程序(C)一、the main function of this system/**用stc52实现简易交通灯*/#include<reg52.h>#include<intrins.h>#include "define.h"#include "lcd_1602.h"#include "delay.h"#include "some_inits.h"#include "control.h"/****************************************主函数void main()****************************************/void main(){sys_init();while(1){key_scan(); //扫描键盘delay_ms(100);}}二、include Some .h files(1)defines.h#ifndef _define_h#define _define_h#define uchar unsigned char#define unint unsigned int/* 液晶数据区*/sfr lcd_bus=0x80; //液晶数据口sbit E=P2^7;sbit RW=P2^6;sbit RS=P2^5;/* 定义三盏led */sbit red=P2^0;sbit green=P2^1;sbit yellow=P2^2;/* 定义三个开关*/sbit jia=P1^0; //加一键sbit jian=P1^1; //减一键sbit ok=P1^2; //确认键uchar flag=1; //1,2,3:绿灯,黄灯,红灯bit first=0;/* 蜂鸣器*/sbit bell=P1^4;uchar sec_h; //秒针十位uchar sec_l; //秒针个位uchar g_h=1,g_l=0;//绿灯计时数据uchar y_h=1,y_l=0;//黄灯计时数据uchar r_h=1,r_l=0;//红灯计时数据#endif(2)some_inits.h#ifndef _some_inits_h#define _some_inits_h#include "lcd_1602.h"#include "define.h"//state some functionsvoid L1602_init();void Time0_init();/*系统初始化*/void sys_init(){flag=1; //绿灯green=1;red=0;yellow=0;L1602_init();//1602液晶初始化Time0_init();//定时器0初始化}/*1602初始化*/void L1602_init(void){enable(0x01);enable(0x38);enable(0x0c);enable(0x06);enable(0xd0);L1602_string(1,2,"traffic lights");sec_h=g_h;sec_l=g_l;L1602_char(2,8,sec_h+0x30);L1602_char(2,9,sec_l+0x30);}/* 定时器0初始化*/void Time0_init(){TMOD=0x01; //time0,time1工作在方式一IE=0x8a; //开EA,允许ET0,允许ET1TH0=0x4c; //50ms,晶振是11.0592MTL0=0x00;//TH1=0xfc; //1ms//TL1=0x66;TR0=1; //time0开始计数}#endif(3)control.h #ifndef _control_h_#define _control_h_#include <intrins.h>#include "lcd_1602.h"#include "define.h"#include "delay.h"/* state some functions */void inc();void dec();void fmq();/* 键盘扫描函数*/void key_scan(){if(ok==0){delay_ms(5);if(ok==0){fmq();enable(0x0c); //关光标first=0;TR0=1; //开始计数}else _nop_();}else if(jia==0 || jian==0){delay_ms(5);if(jia==0 || jian==0){TR0=0; // 停止计数fmq();while(!first){first=1;enable(0x0f); //开光标,开反白}if(jia==0) inc();else if(jian==0) d ec();}else{_nop_();}}}/* 加一*/void inc(void){_nop_();if(green==1 && yellow==0 && red==0) {if(g_l<9 && g_h<5) g_l++;else{if(g_h<5){g_h++;g_l=0;}else{g_h=5;g_l=0;}}sec_h=g_h;sec_l=g_l;}else if(yellow==1 && red==0 && green==0) {if(y_l<9 && y_h<5) y_l++;else{if(y_h<5){y_h++;y_l=0;}else{y_h=5;y_l=0;}}sec_h=y_h;sec_l=y_l;}else if(red==1 && green==0 && yellow==0 ) {if(r_l<9 && r_h<5) r_l++;else{if(r_h<5){r_h++;r_l=0;}else{r_h=5;r_l=0;}}sec_h=r_h;sec_l=r_l;}L1602_char(2,9,sec_l+0x30);L1602_char(2,8,sec_h+0x30);}/* 减一*/void dec(void){_nop_();if(green==1 && yellow==0 && red==0){if(g_l>0 && g_h>0){g_l--;}else{if(g_h>0){g_h--;g_l=9;}else if(g_l>0){g_l--;}else{g_h=0;g_l=0;}}sec_h=g_h;sec_l=g_l;}else if(yellow==1 && green==0 && red==0) {if(y_l>0 && y_h>0){y_l--;}else{if(y_h>0){y_h--;y_l=9;}else if(y_l>0){y_l--;}else{y_h=0;y_l=0;}}sec_h=y_h;sec_l=y_l;}else if(red==1 && yellow==0 && green==0) {if(r_l>0 && r_h>0){r_l--;}else{if(r_h>0){r_h--;r_l=9;}else if(r_l>0){r_l--;}else{r_h=0;r_l=0;}}sec_h=r_h;sec_l=r_l;}L1602_char(2,9,sec_l+0x30);L1602_char(2,8,sec_h+0x30);}/* 蜂鸣器鸣响一声*/void fmq(){unint i=150;while(i--){bell=~bell;delay_ms(1);}}/* time0 service function */void time0() interrupt 1{static count=0;TR0=0;if(count==20) //1s{count=0;if(sec_l==0){if(sec_h==0) //30s结束{if(flag==1){flag++;green=1;red=0;yellow=0;sec_h=g_h;sec_l=g_l;}else if(flag==2) //状态二,亮黄灯{flag++;green=0;red=0;yellow=1;sec_h=y_h;sec_l=y_l;}else if(flag==3)//状态三,红灯亮{flag=1; //回到状态一,绿灯亮green=0;red=1;yellow=0;sec_h=r_h;sec_l=r_l;}}else //个位为0而已{sec_h--;sec_l=9;}}else{sec_l--;}L1602_char(2,8,sec_h+0x30);L1602_char(2,9,sec_l+0x30);}else{count++;}TH0=0x4c;TL0=0x00;TR0=1;}#endif(4)lcd_1602.h#ifndef _lcd_1602_h#define _lcd_1602_h#include "define.h"#include "delay.h"uchar Convert(uchar In_Date){uchar i, Out_Date = 0, temp = 0;for(i=0; i<8; i++){temp = (In_Date >> i) & 0x01;Out_Date |= (temp << (7 - i));}return Out_Date;}/*写命令*/void enable(uchar del){P0 = Convert(del);RS = 0;RW = 0;E = 0;delay();E = 1;delay();}/*写数据*/void write(uchar del){P0 = Convert(del);RS = 1;RW = 0;E = 0;delay();E = 1;delay();}/*写字符*/void L1602_char(uchar hang,uchar lie,char sign) {uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;enable(a);write(sign);}/*写字符串*/void L1602_string(uchar hang,uchar lie,uchar *p) {uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;enable(a);while(1){if(*p == '\0') break;write(*p);p++;}}#endif。

基于STC89C52RC的LCD12864模块调试源码

基于STC89C52RC的LCD12864模块调试源码

///////////////////////////////////////////////////////CONFIG.H引脚配置文件:///////////////////////////////////////////////////////#ifndef _CONFIG_H#define _CONFIG_H/* 通用头文件*/#include <reg52.h>#include <intrins.h>/* 数据类型定义*//*typedef signed char int8; // 8位有符号整型数typedef signed int int16; //16位有符号整型数typedef signed long int32; //32位有符号整型数*/typedef unsigned char u8; // 8位无符号整型数typedef unsigned int u16; //16位无符号整型数typedef unsigned long u32; //32位无符号整型数/* 全局运行参数定义*/#define SYS_MCLK (11059200/12) //系统主时钟频率,即振荡器频率÷12 /* IO引脚分配定义*/sbit KEY_IN_1 = P2^4; //矩阵按键的扫描输入引脚1sbit KEY_IN_2 = P2^5; //矩阵按键的扫描输入引脚2sbit KEY_IN_3 = P2^6; //矩阵按键的扫描输入引脚3sbit KEY_IN_4 = P2^7; //矩阵按键的扫描输入引脚4sbit KEY_OUT_1 = P2^3; //矩阵按键的扫描输出引脚1sbit KEY_OUT_2 = P2^2; //矩阵按键的扫描输出引脚2sbit KEY_OUT_3 = P2^1; //矩阵按键的扫描输出引脚3sbit KEY_OUT_4 = P2^0; //矩阵按键的扫描输出引脚4sbit ADDR0 = P1^0; //LED位选译码地址引脚0sbit ADDR1 = P1^1; //LED位选译码地址引脚1sbit ADDR2 = P1^2; //LED位选译码地址引脚2sbit ADDR3 = P1^3; //LED位选译码地址引脚3sbit ENLED = P1^4; //LED显示部件的总使能引脚#define LCD12864_DB P0 //1602液晶数据端口sbit LCD12864_RES = P1^0; //1602液晶指令/数据选择引脚sbit LCD12864_RW = P1^1; //1602液晶读写引脚sbit LCD12864_EN = P1^5; //1602液晶使能引脚sbit DS1302_CE = P1^7; //DS1302片选引脚sbit DS1302_CK = P3^5; //DS1302通信时钟引脚sbit DS1302_IO = P3^4; //DS1302通信数据引脚sbit I2C_SCL = P3^7; //I2C总线时钟引脚sbit I2C_SDA = P3^6; //I2C总线数据引脚sbit BUZZER = P1^6; //蜂鸣器控制引脚sbit IO_18B20 = P3^2; //DS18B20通信引脚sbit IR_INPUT = P3^3; //红外接收引脚#include "LCD12864.H"#include "TIME.H"#include "DHT21.h"#endif//////////////////////////////////////////////////////////////LCD12864.C源码/////////////////////////////////////////////////////////////#include "config.h"u8 zhbuf[]={"预览"}; //中文数组u8 ehbuf[]={"yulan"}; //英文字符数组u8 code imbuf[]={ //图片码128*64 宽16,高320x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };/*写等待*/void Write_Ready(){u8 sta=0;LCD12864_RES = 0;LCD12864_RW = 1;do{LCD12864_EN = 1;sta = P0;LCD12864_EN = 0;}while(sta&0x80);}/*读RAM中数据*/u8 Read_12864_RAM(){u8 ram=0;LCD12864_RES = 1;LCD12864_RW = 1;LCD12864_EN = 1;ram = P0;LCD12864_EN = 0;return ram;}/*写指令*/void Write_12864_Cmd(u8 cmd) {Write_Ready();LCD12864_RES = 0;LCD12864_RW = 0;P0 = cmd;LCD12864_EN = 1;LCD12864_EN = 0;}/*写数据*/void Write_12864_Dat(u8 dat){Write_Ready();LCD12864_RES = 1;LCD12864_RW = 0;P0 = dat;LCD12864_EN = 1;LCD12864_EN = 0;}/*设置起始坐标*/void Set_DDRAM_XY(u8 x,u8 y){if(x>=7)x=7;if(y>=3)y=3;switch(y){case 0:Write_12864_Cmd(0x80+x);break;case 1:Write_12864_Cmd(0x90+x);break;case 2:Write_12864_Cmd(0x88+x);break;case 3:Write_12864_Cmd(0x98+x);break;default : break;}}/*显示连续的2个字符*/void Show_Double_12864_Char(u8 x,u8 y,u8 *c) {Set_DDRAM_XY(x,y);Write_12864_Dat(*c);Write_12864_Dat(*(c+1));}/*显示单个字符*/void Show_Single_12864_Char(u8 x,u8 y,u8 *c) {Set_DDRAM_XY(x,y);Write_12864_Dat(*c);}/*显示中文字符串*/void Show_12864_ZH(u8 x,u8 y,u8 *zh){u8* p=zh;Set_DDRAM_XY(x,y);while((*p)!='\0'){Write_12864_Dat(*p++);}}/*显示一串数值*//*u8 dec 小数位为0不显示小数*/void Show_12864_NUM(u8 x,u8 y,u8 dec,u16 num) {u8 i;u8 numbuf[6];for(i=0;num;i++){numbuf[i]=num%10+'0';num/=10;}Set_DDRAM_XY(x,y);for(;i;i--){if(i==dec){Write_12864_Dat(0X2E); //显示小数点}Write_12864_Dat(*(numbuf+(i-1))); //显示数值}}/*显示英文字符串*/void Show_12864_EH(u8 x,u8 y,u8 *eh){u8* p=eh;Set_DDRAM_XY(x,y);while((*p)!='\0'){Write_12864_Dat(*p++);}}/*显示图案*/void Show_12864_IM(u8 code *im){unsigned char x,y,i;unsigned int tmp=0;for(i=0;i<9;){ //分两屏,上半屏和下半屏,因为起始地址不同,需要分开for(x=0;x<32;x++){ //32行Write_12864_Cmd(0x34);Write_12864_Cmd(0x80+x);//列地址Write_12864_Cmd(0x80+i); //行地址,下半屏,即第三行地址0X88Write_12864_Cmd(0x30);for(y=0;y<16;y++)Write_12864_Dat(im[tmp+y]);//读取数据写入LCDtmp+=16;}i+=8;}Write_12864_Cmd(0x36); //扩充功能设定Write_12864_Cmd(0x30);}/*初始化12864*/void Init_Lcd12864(){Read_12864_RAM();Show_Single_12864_Char(0,0,'A');Show_Double_12864_Char(0,0,"AB");Show_12864_NUM(0,0,1,123);Show_12864_ZH(0,0,"预览");Show_12864_EH(0,0,"yulan");Show_12864_IM(imbuf);Write_12864_Cmd(0X30); //8位数据,基本指令Write_12864_Cmd(0X0C); //开显示,关游标Write_12864_Cmd(0X01); //清屏Write_12864_Cmd(0X02); //地址归位Write_12864_Cmd(0X80); //设置DDRAM地址}////////////////////////////////////////////////////////////////////////////////////// MAIN.C文件//////////////////////////////////////////////////////////////////////////////////////////////*主测试函数*/void main(){Init_Lcd12864();Read_12864_RAM();Show_12864_IM(imbuf);Show_12864_EH(0,0,ehbuf);Show_12864_ZH(1,1,zhbuf);while(1);}///////////////////////////////////////////////////////////////。

STC89C52RC头文件

STC89C52RC头文件

STC89C52RC头文件/* After is STC additional SFR *//* sfr AUXR = 0x8e; *//* sfr AUXR1 = 0xa2; *//* sfr IPH = 0xb7; */sfr P4 = 0xe8;sbit P43 = P4^3;sbit P42 = P4^2;sbit P41 = P4^1;sbit P40 = P4^0;sfr XICON = 0xc0;sfr WDT_CONTR = 0xe1;sfr ISP_DATA = 0xe2;sfr ISP_ADDRH = 0xe3;sfr ISP_ADDRL = 0xe4;sfr ISP_CMD = 0xe5;sfr ISP_TRIG = 0xe6;sfr ISP_CONTR = 0xe7;/* Above is STC additional SFR *//*--------------------------------------------------------------------------REG51F.HHeader file for 8xC31/51, 80C51Fx, 80C51Rx+Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.Modification according to DataSheet from April 1999- SFR's AUXR and AUXR1 added for 80C51Rx+ derivatives --------------------------------------------------------------------------*//* BYTE Registers */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;/* 80C51Fx/Rx Extensions */ sfr AUXR = 0x8E;sfr AUXR1 = 0xA2;sfr SADDR = 0xA9;sfr IPH = 0xB7;sfr SADEN = 0xB9;sfr T2CON = 0xC8;sfr T2MOD = 0xC9;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;/* PCA SFRsfr CCON = 0xD8;sfr CMOD = 0xD9;sfr CCAPM0 = 0xDA;sfr CCAPM1 = 0xDB;sfr CCAPM2 = 0xDC;sfr CCAPM3 = 0xDD;sfr CCAPM4 = 0xDE;sfr CL = 0xE9;sfr CCAP0L = 0xEA;sfr CCAP1L = 0xEB;sfr CCAP2L = 0xEC;sfr CCAP3L = 0xED;sfr CCAP4L = 0xEE; sfr CH = 0xF9;sfr CCAP0H = 0xFA; sfr CCAP1H = 0xFB; sfr CCAP2H = 0xFC; sfr CCAP3H = 0xFD; sfr CCAP4H = 0xFE; *//* BIT Registers */ /* PSW */sbit CY = PSW^7; sbit AC = PSW^6; sbit F0 = PSW^5; sbit RS1 = PSW^4; sbit RS0 = PSW^3; sbit OV = PSW^2; sbit P = PSW^0;/* TCON */sbit TF1 = TCON^7; sbit TR1 = TCON^6; sbit TF0 = TCON^5; sbit TR0 = TCON^4; sbit IE1 = TCON^3; sbit IT1 = TCON^2; sbit IE0 = TCON^1; sbit IT0 = TCON^0;/* IE */sbit EA = IE^7;sbit EC = IE^6;sbit ET2 = IE^5;sbit ES = IE^4;sbit ET1 = IE^3;sbit EX1 = IE^2;sbit ET0 = IE^1;sbit EX0 = IE^0;/* IP *//* sbit PPC = IP^6;*/sbit PT2 = IP^5;sbit PS = IP^4;sbit PT1 = IP^3;sbit PX1 = IP^2;sbit PT0 = IP^1;sbit PX0 = IP^0;/* P3 */sbit RD = P3^7;sbit WR = P3^6;sbit T1 = P3^5;sbit T0 = P3^4;sbit INT1 = P3^3;sbit INT0 = P3^2;sbit TXD = P3^1;sbit RXD = P3^0;/* SCON */sbit SM0 = SCON^7; // alternatively "FE"sbit FE = SCON^7;sbit SM1 = SCON^6; sbit SM2 = SCON^5;sbit REN = SCON^4; sbit TB8 = SCON^3; sbit RB8 = SCON^2; sbit TI = SCON^1;sbit RI = SCON^0;/* P1 *//* PCAsbit CEX4 = P1^7;sbit CEX3 = P1^6;sbit CEX2 = P1^5;sbit CEX1 = P1^4;sbit CEX0 = P1^3;sbit ECI = P1^2;*/sbit T2EX = P1^1;sbit T2 = P1^0;/* T2CON */sbit TF2 = T2CON^7; sbit EXF2 = T2CON^6; sbit RCLK = T2CON^5; sbit TCLK = T2CON^4; sbit EXEN2 = T2CON^3; sbit TR2 = T2CON^2;sbit C_T2 = T2CON^1; sbit CP_RL2= T2CON^0;/* CCON *//* PCAsbit CF = CCON^7;sbit CR = CCON^6;sbit CCF4 = CCON^4; sbit CCF3 = CCON^3; sbit CCF2 = CCON^2; sbit CCF1 = CCON^1; sbit CCF0 = CCON^0; */。

stc89c52自动喷灌程序代码

stc89c52自动喷灌程序代码

stc89c52自动喷灌程序代码一、前言STC89C52是一款基于8位单片机的微控制器,被广泛应用于各种自动化控制系统中。

本文将介绍如何使用STC89C52编写自动喷灌程序代码。

二、硬件准备1. STC89C52单片机开发板2. 液晶显示屏3. 电磁阀4. 温湿度传感器5. 水位传感器6. 12V电源适配器三、程序设计1. 引入头文件和定义变量#include <reg52.h>#include <stdio.h>#include <stdlib.h>#include "lcd1602.h"sbit DHT11 = P3^7; // 温湿度传感器引脚定义sbit WATER_LEVEL = P3^6; // 水位传感器引脚定义sbit SOLENOID_VALVE = P1^0; // 电磁阀引脚定义int temperature, humidity, water_level;2. 初始化函数void Init() {LCD_Init(); // 初始化液晶屏SOLENOID_VALVE = 0; // 初始关闭电磁阀}3. 温湿度读取函数void ReadDHT11() {unsigned char i, j, k;unsigned char data[5];DHT11 = 0;delay_ms(20);DHT11 = 1;delay_us(30);if (DHT11 == 0) {delay_us(80);if (DHT11 == 1) {delay_us(80);for (i = 0; i < 5; i++) {data[i] = 0;for (j = 0; j < 8; j++) {k = 0;while (!DHT11);delay_us(30);if (DHT11 == 0) k = 1;while (DHT11);data[i] <<= 1;data[i] |= k;}}if ((data[0] + data[1] + data[2] + data[3]) == data[4]) { humidity = data[0];temperature = data[2];}}}}4. 水位读取函数void ReadWaterLevel() {water_level = WATER_LEVEL;}5. 喷灌控制函数void IrrigationControl() {if (water_level == 1 && temperature > 25 && humidity <70) { // 当水位高于一定值且温度大于25度且湿度小于70%时开启喷灌 SOLENOID_VALVE = 1; // 打开电磁阀LCD_Write_String("Irrigation ON");} else { // 否则关闭喷灌SOLENOID_VALVE = 0; // 关闭电磁阀LCD_Write_String("Irrigation OFF");}}6. 主函数void main() {Init();while (1) {ReadDHT11();ReadWaterLevel();IrrigationControl();LCD_Set_Cursor(2, 1);LCD_Write_String("Temp:");LCD_Write_Char(temperature / 10 + '0'); LCD_Write_Char(temperature % 10 + '0'); LCD_Write_String("C ");LCD_Write_String("Humidity:");LCD_Write_Char(humidity / 10 + '0');LCD_Write_Char(humidity % 10 + '0');LCD_Write_String("%");}}四、总结本文介绍了如何使用STC89C52编写自动喷灌程序代码,包括硬件准备、程序设计和主函数等内容。

STC89C52RC芯片下载使用说明书

STC89C52RC芯片下载使用说明书


中国. 中国.上海浩豚电子科技有任公司
DOFLY
部分更新资料或者学习资料请登陆网址: E-mail: haotun@

中国. 中国.上海浩豚电子科技有任公司
下载软件的使用
双击 打开下载软件

中国. 中国.上海浩豚电子科技有任公司
DOFLY
① ② ③


中国. 中国.上海浩豚电子科技有任公司
DOFLY
以上主要是操作分为4步
1、选择芯片类型,必须是STC系列 2、打开需要烧写的HEX文件 3、选择对应的COM口 4、点击“下载”,关掉开发板电源,然后稍等片刻打开,等待下载完 成
电脑 USB
中国. 中国.上海浩豚电子科技有任公司
ቤተ መጻሕፍቲ ባይዱ
DOFLY
USB转串口线驱动安装 (串口线跳过此安装) Usb转串口线插入电脑后会提示 如下信息:
点击“取消”

中国. 中国.上海浩豚电子科技有任公司
DOFLY
手动打开HL-341文件夹 ,双击安装驱动
DOFLY
DY_mini80 开发板
STC89系列芯片程序下载(烧写)指导书

中国. 中国.上海浩豚电子科技有任公司
DOFLY
STC89C系列 下载硬件连接图
USB转串口线的连接
电脑 USB
中国. 中国.上海浩豚电子科技有任公司
DOFLY
STC89C系列 下载硬件连接图 串口线的连接 电脑串口

中国. 中国.上海浩豚电子科技有任公司
DOFLY
点击“INSTALL”安装,成功后点击“确定”
中国. 中国.上海浩豚电子科技有任公司
DOFLY
出现虚拟的COM口(COM8)

STC89C52RC步进电机控制程序

STC89C52RC步进电机控制程序
{
while(x--);
}
void main()
{
unsigned int i;
while(1)
{
if(k1==0)
{
delay_ms(100);
if(k1==0)//按下不动,正转
{
for(i=0;i<8;i++)
{
set_IO(ZZ[i]);
delay_ms(200);
}
}
}
if(k2==0)
{
unsigned char code FZ[]= {0x06, 0x07, 0x03, 0x0B, 0x09, 0x0D, 0x0C, 0x0E};//反转
//定义步进电机四相接口
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
//定义按键
sbit k1=P3^2;
sbit k2=P3^3;
//将步进电机四个口设置为一组I/O,只占用四个I/O口
void set_IO(unsigned char n)
{
D1 = n & 1;
D2 = n >> 1 & 1;
D3 = n >> 2 & 1;
D4 = n >> 3 & 1;
}
void delay_ms(unsigned int x)//延时毫秒级
stc89c52rc步进电机控制程序plc控制步进电机程序步进电机的控制程序pwm控制步进电机程序步进电机控制器单片机控制步进电机步进电机控制步进电机驱动程序plc控制步进电机步进电机的控制方法
四相五线步进电机控制程序。

STC89C52RC单片机介绍

STC89C52RC单片机介绍

STC89C52RC单片机介绍编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(STC89C52RC单片机介绍)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为STC89C52RC单片机介绍的全部内容。

STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1。

增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2。

工作电压:5。

5V~3。

3V(5V单片机)/3。

8V~2。

0V(3V单片机)3。

工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4. 用户应用程序空间为8K字节5。

片上集成512字节RAM6。

通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7。

ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3。

0,TxD/P3。

1)直接下载用户程序,数秒即可完成一片8. 具有EEPROM功能9。

具有看门狗功能10. 共3个16位定时器/计数器。

即定时器T0、T1、T211. 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12。

通用异步串行口(UART),还可用定时器软件实现多个UART13. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14. PDIP封装STC89C52RC单片机的工作模式l 掉电模式:典型功耗〈0。

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册一、概述STC89C52RC 单片机是一款高性能、低功耗的 8 位微控制器,具有丰富的片上资源和强大的功能,广泛应用于各种电子设备和控制系统中。

二、特点与优势1、高性能采用 8051 内核,处理速度快。

具有较高的指令执行效率。

2、丰富的片上资源8K 字节的 Flash 程序存储器,可多次擦写。

512 字节的 RAM 数据存储器。

32 个 I/O 口,满足多种外设连接需求。

3、低功耗多种节能模式,有效降低系统功耗。

4、易于编程支持在线编程和下载,方便开发调试。

三、引脚功能1、电源引脚VCC:电源正极,通常接+5V 电源。

GND:电源地。

2、时钟引脚XTAL1:内部振荡器反相放大器的输入端。

XTAL2:内部振荡器反相放大器的输出端。

3、控制引脚RST:复位引脚,高电平有效。

EA/VPP:访问外部程序存储器控制引脚。

4、 I/O 引脚P0 口:8 位漏极开路双向 I/O 口。

P1 口:8 位准双向 I/O 口。

P2 口:8 位准双向 I/O 口。

P3 口:8 位准双向 I/O 口,具有第二功能。

四、存储器结构1、程序存储器可通过编程器将程序写入 Flash 存储器。

2、数据存储器内部 RAM 用于存储临时数据和变量。

五、中断系统1、中断源外部中断 0 和 1。

定时器/计数器中断。

串行口中断。

2、中断优先级支持两级中断优先级设置。

六、定时器/计数器1、定时器 0 和 1可作为定时器或计数器使用。

2、工作方式多种工作方式可供选择,满足不同应用需求。

七、串行通信1、串行口工作方式支持 4 种工作方式。

2、波特率设置通过定时器设置不同的波特率。

八、编程与开发1、开发工具可以使用 Keil 等集成开发环境进行编程。

2、下载方式通过串口下载程序到单片机。

九、应用示例以下是一个简单的 STC89C52RC 单片机控制 LED 灯闪烁的示例程序:```cinclude <reg52h> //包含 52 系列单片机头文件sbit LED = P1^0; //定义 LED 连接的引脚void delay(unsigned int t) //延时函数{unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}void main()//主函数{while (1){LED = 0; //点亮 LEDdelay(500);//延时 500msLED = 1; //熄灭 LEDdelay(500);//延时 500ms}}```十、注意事项1、电源稳定性确保电源供应稳定,避免电压波动对单片机造成影响。

单片机stc89(STC89C52,C51)系列头文件.doc

单片机stc89(STC89C52,C51)系列头文件.doc

/*------------------------------------------------*//* --- 宏晶科技STCMCU ---------------------------*//* --- Mobile: (86) -------------------*//* --- Fax: 86- ----------------------*//* --- Tel: 86- ----------------------*//* --- Web: -----------------------*//* 适用于: STC89C5xRC STC89LE5xRC --------------*//* ------- STC89C5xRD+ STC89LE5xRD+ --------------*//*------------------------------------------------*/#ifndef __STC89_H__#define __STC89_H__////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr PSW = 0xd0; //程序状态字 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述CY AC F0 RS1 RS0 OV F1 P//初始值=0000,0000 0 0 0 0 0 0 0 0sbit CY = PSW^7; //进位标志sbit AC = PSW^6; //辅助进位标志sbit F0 = PSW^5; //用户标志sbit RS1 = PSW^4; //寄存器组选择位sbit RS0 = PSW^3; //寄存器组选择位sbit OV = PSW^2; //溢出标志sbit P = PSW^0; //ACC的偶校验位/////////////////////////////////sfr ACC = 0xe0; //累加器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0sbit ACC7 = ACC^7; //累加器第位sbit ACC6 = ACC^6; //累加器第位sbit ACC5 = ACC^5; //累加器第位sbit ACC4 = ACC^4; //累加器第位sbit ACC3 = ACC^3; //累加器第位sbit ACC2 = ACC^2; //累加器第位sbit ACC1 = ACC^1; //累加器第位sbit ACC0 = ACC^0; //累加器第位/////////////////////////////////sfr B = 0xf0; //B寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr SP = 0x81; //堆栈指针 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0111 0 0 0 0 0 1 1 1/////////////////////////////////sfr DPL = 0x82; //数据指针低字节 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0sfr DPH = 0x83; //数据指针高字节 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr PCON = 0x87; //电源控制寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 SMOD SMOD0 - POF GF1 GF0 PD IDL//初始值=00x1,0000 0 0 x 1 0 0 0 0#define SMOD 0x80 //串口波特率倍速位,置可使波特率快倍#define SMOD0 0x40 //FE/SM0选择位,0:为SM0 1:为FE#define POF 0x10 //上电复位标志位,上电时由硬件置,需由软件清#define GF1 0x08 //通用标志位#define GF0 0x04 //通用标志位#define PD 0x02 //掉电控制位,写可以使MCU进入PowerDown模式#define IDL 0x01 //空闲控制位,写可以使MCU进入Idle模式/////////////////////////////////sfr WDT_CONTR = 0xe1; //看门狗定时器控制器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述- - EN_WDT CLR_WDT IDL_WDT PS2 PS1 PS0//初始值=xx00,0000 x x 0 0 0 0 0 0#define EN_WDT 0x20 //软件使能看门狗,打开后不能用软件的方式关闭#define CLR_WDT 0x10 //清看门狗定时器#define IDLE_WDT 0x08 //IDLE模式下,看门狗定时器是否继续计时////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr AUXR = 0x8e; //辅助寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述- - - - - - EXTRAM S1BRS//初始值=xxxx,xx00 xx x x x x 0 0#define EXTRAM 0x02 //内部扩展RAM禁能位,0:内部扩展RAM有效1:禁用内部扩展RAM#define ALEOFF 0x01 //禁止ALE信号输出,0:使能ALE信号输出1:关闭ALE信号输出/////////////////////////////////sfr AUXR1 = 0xa2; //辅助寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述- - - - GF2 - - DPS//初始值=xxxx,0xx0 x x x x 0 x x 0#define GF2 0x08 //通用标志位#define DPS 0x01 //DPTR0/DPTR1选择位,0:DPTR01:DPTR1////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr P0 = 0x80; //I/O端口 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述//初始值=1111,1111 1 1 1 1 1 1 1 1sbit P07 = P0^7; //I/O口sbit P06 = P0^6; //I/O口sbit P05 = P0^5; //I/O口sbit P04 = P0^4; //I/O口sbit P03 = P0^3; //I/O口sbit P02 = P0^2; //I/O口sbit P01 = P0^1; //I/O口sbit P00 = P0^0; //I/O口/////////////////////////////////sfr P1 = 0x90; //I/O端口 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述//初始值=1111,1111 1 1 1 1 1 1 1 1sbit P17 = P1^7; //I/O口sbit P15 = P1^5; //I/O口sbit P14 = P1^4; //I/O口sbit P13 = P1^3; //I/O口sbit P12 = P1^2; //I/O口sbit P11 = P1^1; //I/O口sbit P10 = P1^0; //I/O口sbit T2 = P1^0; //定时器的外部信号输入口sbit T2CLKO = P1^0; //定时器定的时钟溢出脉冲输出脚sbit T2EX = P1^1; //定时器的中断控制源/////////////////////////////////sfr P2 = 0xa0; //I/O端口 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述//初始值=1111,1111 1 1 1 1 1 1 1 1sbit P27 = P2^7; //I/O口sbit P26 = P2^6; //I/O口sbit P24 = P2^4; //I/O口sbit P23 = P2^3; //I/O口sbit P22 = P2^2; //I/O口sbit P21 = P2^1; //I/O口sbit P20 = P2^0; //I/O口/////////////////////////////////sfr P3 = 0xb0; //I/O端口 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述//初始值=1111,1111 1 1 1 1 1 1 1 1sbit P37 = P3^7; //I/O口sbit P36 = P3^6; //I/O口sbit P35 = P3^5; //I/O口sbit P34 = P3^4; //I/O口sbit P33 = P3^3; //I/O口sbit P32 = P3^2; //I/O口sbit P31 = P3^1; //I/O口sbit RXD = P3^0; //串口的数据接收口sbit TXD = P3^1; //串口的数据发送口sbit INT0 = P3^2; //外部中断的信号输入口sbit INT1 = P3^3; //外部中断的信号输出口sbit T0 = P3^4; //定时器的外部信号输入口sbit T1 = P3^5; //定时器的外部信号输入口sbit WR = P3^6; //外部数据存储器的写信号sbit RD = P3^7; //外部数据存储器的读信号/////////////////////////////////sfr P4 = 0xc0; //I/O端口 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 -//初始值=xxxx,1111 xx x x 1 1 1 1sbit P43 = P4^3; //I/O口sbit P42 = P4^2; //I/O口sbit P41 = P4^1; //I/O口sbit P40 = P4^0; //I/O口////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr IE = 0xa8; //中断使能寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述EA - ET2 ES ET1 EX1 ET0 EX0//初始值=0x00,0000 0 x 0 0 0 0 0 0sbit EA = IE^7; //总中断开关sbit ET2 = IE^5; //定时器中断使能位sbit ES = IE^4; //串口中断使能位sbit ET1 = IE^3; //定时器中断使能位sbit EX1 = IE^2; //外部中断中断使能位sbit ET0 = IE^1; //定时器中断使能位sbit EX0 = IE^0; //外部中断中断使能位/////////////////////////////////sfr IPH = 0xb7; //中断优先级寄存器高位 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 PX3H PX2H PT2H PSH PT1H PX1H PT0H PX0H//初始值=0000,0000 0 0 0 0 0 0 0 0#define PX3H 0x80 //外部中断中断优先级控制高位#define PX2H 0x40 //外部中断中断优先级控制高位#define PT2H 0x20 //定时器中断优先级控制高位#define PSH 0x10 //串口中断优先级控制高位#define PT1H 0x08 //定时器中断优先级控制高位#define PX1H 0x04 //外部中断中断优先级控制高位#define PT0H 0x02 //定时器中断优先级控制高位#define PX0H 0x01 //外部中断中断优先级控制高位/////////////////////////////////sfr IP = 0xb8; //中断优先级寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述- - PT2 PS PT1 PX1 PT0 PX0//初始值=xx00,0000 x x 0 0 0 0 0 0sbit PT2 = IP^5; //定时器中断优先级控制低位sbit PS = IP^4; //串口中断优先级控制低位sbit PT1 = IP^3; //定时器中断优先级控制低位sbit PX1 = IP^2; //外部中断中断优先级控制低位sbit PT0 = IP^1; //定时器中断优先级控制低位sbit PX0 = IP^0; //外部中断中断优先级控制低位/////////////////////////////////sfr XICON = 0xe8; //辅助中断使能寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 PX3 EX3 IE3 IT3 PX2 EX2 IE2 IT2//初始值=0000,0000 0 0 0 0 0 0 0 0sbit PX3 = XICON^7; //外部中断中断优先级控制低位sbit EX3 = XICON^6; //使能外部中断sbit IE3 = XICON^5; //外部中断的中断请求位,由硬件置,可由软件清或者在中断处理程序完成后由硬件自动清sbit IT3 = XICON^4; //外部中断的触发类型,0:低电平触发外部中断1:下降沿触发外部中断sbit PX2 = XICON^3; //外部中断中断优先级控制低位sbit EX2 = XICON^2; //使能外部中断sbit IE2 = XICON^1; //外部中断的中断请求位,由硬件置,可由软件清或者在中断处理程序完成后由硬件自动清sbit IT2 = XICON^0; //外部中断的触发类型,0:低电平触发外部中断1:下降沿触发外部中断#define X0_INTNO 0 //外部中断中断号,入口地址为H#define T0_INTNO 1 //定时器中断号,入口地址为BH#define X1_INTNO 2 //外部中断中断号,入口地址为H#define T1_INTNO 3 //定时器中断号,入口地址为BH#define UART_INTNO 4 //串口中断号,入口地址为H#define T2_INTNO 5 //定时器中断号,入口地址为BH#define X2_INTNO 6 //外部中断中断号,入口地址为H#define X3_INTNO 7 //外部中断中断号,入口地址为BH////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr TCON = 0x88; //定时器/1控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0//初始值=0000,0000 0 0 0 0 0 0 0 0sbit TF1 = TCON^7; //定时器溢出标志,由硬件置,可由软件清或者在中断处理程序完成后由硬件自动清sbit TR1 = TCON^6; //定时器的启动控制位,1:启动定时器0:停止定时器sbit TF0 = TCON^5; //定时器溢出标志,由硬件置,可由软件清或者在中断处理程序完成后由硬件自动清sbit TR0 = TCON^4; //定时器的启动控制位,1:启动定时器0:停止定时器sbit IE1 = TCON^3; //外部中断的中断请求位,由硬件置,可由软件清或者在中断处理程序完成后由硬件自动清sbit IT1 = TCON^2; //外部中断的触发类型,0:低电平触发外部中断1:下降沿触发外部中断sbit IE0 = TCON^1; //外部中断的中断请求位,由硬件置,可由软件清或者在中断处理程序完成后由硬件自动清sbit IT0 = TCON^0; //外部中断的触发类型,0:低电平触发外部中断1:下降沿触发外部中断/////////////////////////////////sfr TMOD = 0x89; //定时器/1模式寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 GATEC/T# M1 M0 GATE C/T# M1 M0//初始值=0000,0000 0 0 0 0 0 0 0 0#define GATE1 0x80 //定时器启动控制位,0:TR1为时启动定时器1:TR1为且INT1为高电平时才启动定时器#define C_T1 0x40 //定时器/计数器选择位,0:定时器(时钟源为内部时钟) 1:计数器(时钟源为T1引脚的外部时钟)#define T1_M0 0x00 //定时器操作模式:13位定时器#define T1_M1 0x10 //定时器操作模式:16位定时器#define T1_M2 0x20 //定时器操作模式:8位自动重载定时器#define T1_M3 0x30 //定时器操作模式:定时器停止#define GATE0 0x08 //定时器启动控制位,0:TR0为时启动定时器1:TR0为且INT0为高电平时才启动定时器#define C_T0 0x04 //定时器/计数器选择位,0:定时器(时钟源为内部时钟) 1:计数器(时钟源为T0引脚的外部时钟)#define T0_M0 0x00 //定时器操作模式:13位定时器#define T0_M1 0x01 //定时器操作模式:16位定时器#define T0_M2 0x02 //定时器操作模式:8位自动重载定时器#define T0_M3 0x03 //定时器操作模式:TL0和TH0为两组独立位定时器/////////////////////////////////sfr TL0 = 0x8a; //定时器的低位计数值 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr TL1 = 0x8b; //定时器的低位计数值 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr TH0 = 0x8c; //定时器的高位计数值 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr TH1 = 0x8d; //定时器的高位计数值 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr T2CON = 0xc8; //定时器控制寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2# CP/RL#//初始值=0000,0000 0 0 0 0 0 0 0 0sbit TF2 = T2CON^7; //定时器溢出标志,由硬件置,必须由软件清sbit EXF2 = T2CON^6; //定时器的外部标志,由硬件置,必须由软件清sbit RCLK = T2CON^5; //接收时钟标志,0:使用定时器作为串口接收发生器1:使用定时器作为串口接收发生器sbit TCLK = T2CON^4; //发送时钟标志,0:使用定时器作为串口发送发生器1:使用定时器作为串口发送发生器sbit EXEN2 = T2CON^3; //定时器的外部使能标志sbit TR2 = T2CON^2; //启动定时期sbit C_T2 = T2CON^1; //定时器/计数器选择位,0:定时器(时钟源为内部时钟) 1:计数器(时钟源为T2引脚的外部时钟)sbit CP_RL2 = T2CON^0; //捕获/重载标志/////////////////////////////////sfr T2MOD = 0xc9; //定时器/1模式寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述- - - - - - T2OE DCEN//初始值=xxxx,xx00 x x x x x x 0 0#define T2OE 0x02 //定时器输出使能,输出溢出率到T2脚#define DCEN 0x01 //定时器向下计数,0:向上计数1:向下计数/////////////////////////////////sfr RCAP2L = 0xca; //定时器重载/捕获低位Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr RCAP2H = 0xcb; //定时器重载/捕获高位Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr TL2 = 0xcc; //定时器的低位计数值 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr TH2 = 0xcd; //定时器的高位计数值 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr SCON = 0x98; //串口控制寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 SM0/FESM1 SM2 REN TB8 RB8 TI Ri//初始值=0000,0000 0 0 0 0 0 0 0 0sbit FE = SCON^7; //帧错误检测位,当串口模块在接收数据时没有检测到正确的停止位时,FE被硬件置,需要由软件来清(当SMOD0为时,FE有效)sbit SM0 = SCON^7; //串口模式设置位sbit SM1 = SCON^6; //SM0/SM1=0/0:移位寄存器0/1:8位可变波特率1/0:9位固定波特率1/1:9位可变波特率sbit SM2 = SCON^5; //自动地址识别使能位sbit REN = SCON^4; //使能串口接收模块sbit TB8 = SCON^3; //发送的第位数据sbit RB8 = SCON^2; //接收的第位数据sbit TI = SCON^1; //发送完成中断标志sbit RI = SCON^0; //接收完成中断标志/////////////////////////////////sfr SBUF = 0x99; //串口接收/发送数据 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=xxxx,xxxx x x x x x x x x/////////////////////////////////sfr SADDR = 0xa9; //串口设备从地址寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr SADEN = 0xb9; //串口设备从地址屏蔽位 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0////////////////////////////////////////////////////////////////////////////////////////////////////////////////sfr ISP_DATA = 0xe2; //ISP数据寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=1111,1111 1 1 1 1 1 1 1 1/////////////////////////////////sfr ISP_ADDRH = 0xe3; //ISP地址高位寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr ISP_ADDRL = 0xe4; //ISP地址低位寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=0000,0000 0 0 0 0 0 0 0 0/////////////////////////////////sfr ISP_CMD = 0xe5; //ISP命令寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=xxxx,xx00 x x x x x 0 0 0#define ISP_IDLE 0x00 //ISP待机命令#define ISP_READ 0x01 //ISP读字节数据命令#define ISP_PROGRAM 0x02 //ISP字节编程命令#define ISP_ERASE 0x03 //ISP扇区擦除命令(每扇区字节))/////////////////////////////////sfr ISP_TRIG = 0xe6; //ISP命令触发寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//初始值=xxxx,xxxx x x x x x x x x#define ISP_TRIG0 0x46 //ISP功能触发命令#define ISP_TRIG1 0xb9 //ISP功能触发命令/////////////////////////////////sfr ISP_CONTR = 0xe7; //ISP控制寄存器 Bit7Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0//位描述 ISPEN SWBS SWRST - - WT2 WT1 WT0//初始值=000x,x000 0 0 0 x x 0 0 0#define ISPEN 0x80 //ISP使能开关#define SWBS 0x40 //软启动选择,0:从用户AP启动1:从ISP启动#define SWRST 0x20 //触发软件复位////////////////////////////////////////////////////////////////////////////////////////////////////////////////#endif。

stc89c52单片机技术资料

stc89c52单片机技术资料

stc89c52单片机技术资料STC89C52RC单片机是一款由XXX推出的新一代高速、低功耗、超强抗干扰单片机。

该单片机的指令代码完全兼容传统的8051单片机,同时12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性包括:增强型8051单片机,指令代码完全兼容传统8051,6时钟/机器周期和12时钟/机器周期可以任意选择。

工作电压范围为5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围为~40MHz,实际工作频率可达48MHz。

用户应用程序空间为8K字节,片上集成512字节RAM,通用I/O口有32个。

具有ISP(在系统可编程)/IAP(在应用可编程)功能,无需专用编程器和仿真器,可通过串口直接下载用户程序。

具有EEPROM功能和看门狗功能,共3个16位定时器/计数器,外部中断4路。

通用异步串行口(UART),还可用定时器软件实现多个UART。

工作温度范围为-40~+85℃(工业级)/0~75℃(商业级),PDIP封装。

STC89C52RC单片机的工作模式包括掉电模式、空闲模式和正常工作模式。

其中,掉电模式的典型功耗小于0.1μA,可由外部中断唤醒,中断返回后继续执行原程序。

空闲模式的典型功耗为2mA,正常工作模式的典型功耗为4Ma~7mA。

掉电模式适用于水表、气表等电池供电系统和便携设备。

STC89C52RC单片机引脚图如下所示,其中VCC为电源电压,VSS为接地,P0端口为一个漏极开路的8位双向I/O 口,可作为输出端口和复用总线。

在Flash ROM编程时,P0端口接收指令字节。

除了定时器/计数器和定时器/计数器1,STC89C52RC还新增了定时器/计数器2.定时器/计数器2的控制和状态位位于T2CON表格中。

定时器2是一个16位定时/计数器,可以通过特殊功能寄存器T2CON中的C/T2位设置为定时器或计数器。

定时器2有三种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这三种模式由T2CON中的位进行选择。

STC89C52RC单片机介绍

STC89C52RC单片机介绍

STC89C52RC单片机介绍STC89C52RC单片机是XXX推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)3.工作频率范围:~40MHz,相当于普通8051的~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉。

P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功用10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的事情模式掉电模式:典范功耗<0.1μA,可由外部中断唤醒,中断返回后,继续履行原步伐空闲模式:典型功耗2mA正常事情模式:典范功耗4Ma~7mA掉电模式可由外部中断唤醒,合用于水表、气表等电池供电体系及便携装备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。

stc89c52rc单片机结构

stc89c52rc单片机结构

stc89c52rc单片机结构STC89C52RC单片机是一种高性能、低功耗的8位单片机,它是由STC公司推出的一款单片机。

其特点是有ISP(In-System Programming)在线编程功能,可以不用拆下芯片,就能使用ISP编程器进行在线编程,提高了单片机的使用效率。

下面就分步骤来阐述STC89C52RC单片机的结构。

第一步,CPU结构STC89C52RC单片机的CPU结构是基于哈佛结构的,其中包括AUC (程序地址计数器)、程序存储器ROM、数据存储器RAM、存储器控制器、总线控制器等部分。

其中AUC具有16位地址,可以寻址的最大空间是64K字节,程序存储器ROM和数据存储器RAM都可以扩展。

第二步,I/O口结构该单片机的I/O口结构包括32个外部I/O口和8个内部I/O口,其中外部I/O口可以连接外部LED、晶振、按键等外设,内部I/O口是可复用的,可以连接CMOS输出器等。

第三步,时钟和定时器的结构STC89C52RC单片机采用了12MHz的晶振,提供了三个定时器,其中Timer0和Timer1是16位定时器/计数器。

Timer2是8位的定时器/计数器,同时还有一个定时器0的16位增量计数器TMOD。

第四步,中断系统结构STC89C52RC单片机的中断系统结构采用了可编程中断控制器(PIC)。

理论最大的中断来源可以达到32个。

同时,该单片机还有5个中断优先级,可以分别分配不同的优先级,以便按照用户优先级来控制中断服务。

第五步,ISP编程结构该单片机的ISP编程结构采用了串行通讯口SI0,除了可以进行在线编程外,还可以通过ISP编程器实现单片机的测试和校验。

综上所述,STC89C52RC单片机结构包括CPU结构、I/O口结构、时钟和定时器的结构、中断系统结构和ISP编程结构。

其具有低功耗、高性能、编程效率高等特点,被广泛应用于计算机辅助设计、智能控制、电子电路自动化等领域。

stc89c52rc

stc89c52rc

stc89c52rcSTC89C52RC: 全面了解脉冲宽度调制控制器摘要:STC89C52RC是一款功能强大的单片机,特别适用于脉冲宽度调制(PWM)控制应用。

本文将对STC89C52RC的特性、应用领域以及其优势进行详细介绍。

第一部分:概述1.1 什么是STC89C52RC?STC89C52RC是一款高性能的8051内核单片机,由中国的ST公司生产。

它采用了先进的CMOS工艺,并配备了强大的功能和性能。

1.2 STC89C52RC的主要特性STC89C52RC具有以下主要特性:- 高性能的8051内核:具有快速的执行速度和高效的指令集。

- 大容量存储器:内置8KB的Flash程序存储器和可扩展的RAM。

- 强大的外设功能:包括多个通用IO口、定时器/计数器、串口等。

- PWM技术支持:内置多个PWM输出通道,可以轻松实现对电机、LED灯等的精确控制。

- 丰富的中断支持:支持多种中断源,可以快速响应外部事件。

- 低功耗设计:采用了多种省电技术,延长了电池寿命,适用于便携式设备应用。

第二部分:应用领域2.1 控制系统与自动化STC89C52RC的强大功能和丰富的外设支持使其成为控制系统和自动化领域的理想选择。

它可以用于工业自动化、家庭自动化、机器人等领域,实现对各种设备和系统的精确控制。

2.2 电机控制电机控制是STC89C52RC的一个重要应用领域。

它的PWM功能可以实现对电机的精确控制,包括速度调节、方向控制等。

在工业设备、家用电器、机器人等领域中,STC89C52RC广泛应用于电机驱动和控制。

2.3 LED控制STC89C52RC具有多个PWM输出通道,可以轻松控制LED的亮度。

在照明、显示屏幕、彩灯等应用中,STC89C52RC可以实现灵活多样的LED控制效果。

2.4 智能家居和物联网随着智能家居和物联网的快速发展,STC89C52RC在这些领域中发挥着重要作用。

它可以实现对智能家居设备的控制和调度,以及与其他设备的互联互通。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
N^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
/* PCA
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 80C51Fx/Rx Extensions */
sfr AUXR = 0x8E;
sfr AUXR1 = 0xA2;
sbit CEX4 = P1^7;
sbit CEX3 = P1^6;
sbit CEX2 = P1^5;
sbit CEX1 = P1^4;
sbit CEX0 = P1^3;
sbit ECI = P1^2;
*/
sbit T2EX = P1^1;
sbit T2 = P1^0;
sfr ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD = 0xe5;
sfr ISP_TRIG = 0xe6;
sfr ISP_CONTR = 0xe7;
/* Above is STC additional SFR */
/* IP */
/* sbit PPC = IP^6;*/
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0;
/* TCON */
sbit TF1 = TCON^7;
/* SCON */
sbit SM0 = SCON^7; // alternatively &quot;FE&quot;
sbit FE = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCO
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr CCAPM4 = 0xDE;
sfr CL = 0xE9;
sfr CCAP0L = 0xEA;
sfr CCAP1L = 0xEB;
sfr CCAP2L = 0xEC;
sfr CCAP3L = 0xED;
sfr CCAP4L = 0xEE;
sfr CH = 0xF9;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/* IE */
sfr SADDபைடு நூலகம் = 0xA9;
sfr IPH = 0xB7;
sfr SADEN = 0xB9;
sfr T2CON = 0xC8;
sfr T2MOD = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
All rights reserved.
Modification according to DataSheet from April 1999
- SFR&#39;s AUXR and AUXR1 added for 80C51Rx+ derivatives
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
REG51F.H
Header file for 8xC31/51, 80C51Fx, 80C51Rx+
Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.
sbit EA = IE^7;
sbit EC = IE^6;
sbit ET2 = IE^5;
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
sfr TH2 = 0xCD;
/* PCA SFR
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sfr CCAPM2 = 0xDC;
sfr CCAPM3 = 0xDD;
sfr P4 = 0xe8;
sbit P43 = P4^3;
sbit P42 = P4^2;
sbit P41 = P4^1;
sbit P40 = P4^0;
sfr XICON = 0xc0;
sfr WDT_CONTR = 0xe1;
sfr ISP_DATA = 0xe2;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* After is STC additional SFR */
/* sfr AUXR = 0x8e; */
/* sfr AUXR1 = 0xa2; */
/* sfr IPH = 0xb7; */
sbit CCF2 = CCON^2;
sbit CCF1 = CCON^1;
sbit CCF0 = CCON^0;
*/
sfr CCAP0H = 0xFA;
sfr CCAP1H = 0xFB;
sfr CCAP2H = 0xFC;
sfr CCAP3H = 0xFD;
sfr CCAP4H = 0xFE;
*/
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit C_T2 = T2CON^1;
sbit CP_RL2= T2CON^0;
/* CCON */
/* PCA
sbit CF = CCON^7;
sbit CR = CCON^6;
sbit CCF4 = CCON^4;
sbit CCF3 = CCON^3;
相关文档
最新文档