|
經(jīng)過比較
stc8a8的頭文件可以完全兼容stc89c52使用
已經(jīng)把它換過去了其實(shí)只要改一個(gè)名字就ok
好像可以迭代兼容
stm8+52
//(171009起以\WEB_STCISP2\header_file\STC8.H 為最終版本)
#ifndef __REG52_H__
#define __REG52_H__
//#ifndef __STC8F_H_
//#define __STC8F_H_
/////////////////////////////////////////////////
//包含本頭文件后,不用另外再包含"REG51.H"
//STC8系列單片機(jī):-1T8051/8K RAM/64K ROM/12位ADC/8組PWM/I2C/SPI/4串口
//詳細(xì)數(shù)據(jù)手冊(cè)等資料請(qǐng)至STC官網(wǎng)下載.
//本STC8系列單片機(jī)頭文件從STC-ISP V6.85o導(dǎo)出,由第三方STCISP.COM根據(jù)STC8-160506數(shù)據(jù)手冊(cè)整理@2016.07.12;13//11.04
//內(nèi)核特殊功能寄存器
sfr ACC = 0xe0; //累加器
sfr B = 0xf0; //B寄存器
sfr PSW = 0xd0; //程序狀態(tài)字寄存器
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4; //-工作寄存器選擇位1
sbit RS0 = PSW^3; //-工作寄存器選擇位0
sbit OV = PSW^2;
sbit P = PSW^0;
sfr SP = 0x81; //堆棧指針
sfr DPL = 0x82; //數(shù)據(jù)指針(低字節(jié))
sfr DPH = 0x83; //數(shù)據(jù)指針(高字節(jié))
sfr TA = 0xae; //DPTR時(shí)序控制寄存器
sfr DPS = 0xe3; //DPTR指針選擇器
sfr DPL1 = 0xe4; //第二組數(shù)據(jù)指針(低字節(jié))
sfr DPH1 = 0xe5; //第二組數(shù)據(jù)指針(高字節(jié))
//I/O 口特殊功能寄存器
sfr P0 = 0x80; //P0端口
sfr P1 = 0x90; //P1端口
sfr P2 = 0xa0; //P2端口
sfr P3 = 0xb0; //P3端口
sfr P4 = 0xc0; //P4端口
sfr P5 = 0xc8; //P5端口
sfr P6 = 0xe8; //P6端口
sfr P7 = 0xf8; //P7端口
sfr P0M0 = 0x94; //P0口配置寄存器0
sfr P0M1 = 0x93; //P0口配置寄存器1
sfr P1M0 = 0x92; //P1口配置寄存器0
sfr P1M1 = 0x91; //P1口配置寄存器1
sfr P2M0 = 0x96; //P2口配置寄存器0
sfr P2M1 = 0x95; //P2口配置寄存器1
sfr P3M0 = 0xb2; //P3口配置寄存器0
sfr P3M1 = 0xb1; //P3口配置寄存器1
sfr P4M0 = 0xb4; //P4口配置寄存器0
sfr P4M1 = 0xb3; //P4口配置寄存器1
sfr P5M0 = 0xca; //P5口配置寄存器0
sfr P5M1 = 0xc9; //P5口配置寄存器1
sfr P6M0 = 0xcc; //P6口配置寄存器0
sfr P6M1 = 0xcb; //P6口配置寄存器1
sfr P7M0 = 0xe2; //P7口配置寄存器0
sfr P7M1 = 0xe1; //P7口配置寄存器1
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
sbit P15 = P1^5;
sbit P16 = P1^6;
sbit P17 = P1^7;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
sbit P25 = P2^5;
sbit P26 = P2^6;
sbit P27 = P2^7;
sbit P30 = P3^0;
sbit P31 = P3^1;
sbit P32 = P3^2;
sbit P33 = P3^3;
sbit P34 = P3^4;
sbit P35 = P3^5;
sbit P36 = P3^6;
sbit P37 = P3^7;
sbit P40 = P4^0;
sbit P41 = P4^1;
sbit P42 = P4^2;
sbit P43 = P4^3;
sbit P44 = P4^4;
sbit P45 = P4^5;
sbit P46 = P4^6;
sbit P47 = P4^7;
sbit P50 = P5^0;
sbit P51 = P5^1;
sbit P52 = P5^2;
sbit P53 = P5^3;
sbit P54 = P5^4;
sbit P55 = P5^5;
sbit P56 = P5^6;
sbit P57 = P5^7;
sbit P60 = P6^0;
sbit P61 = P6^1;
sbit P62 = P6^2;
sbit P63 = P6^3;
sbit P64 = P6^4;
sbit P65 = P6^5;
sbit P66 = P6^6;
sbit P67 = P6^7;
sbit P70 = P7^0;
sbit P71 = P7^1;
sbit P72 = P7^2;
sbit P73 = P7^3;
sbit P74 = P7^4;
sbit P75 = P7^5;
sbit P76 = P7^6;
sbit P77 = P7^7;
//如下特殊功能寄存器位于擴(kuò)展RAM區(qū)域
//訪問這些寄存器,需先將P_SW2的BIT7設(shè)置為1,才可正常讀寫
#define P0PU (*(unsigned char volatile xdata *)0xfe10) //P0口上拉電阻控制寄存器
#define P1PU (*(unsigned char volatile xdata *)0xfe11) //P1口上拉電阻控制寄存器
#define P2PU (*(unsigned char volatile xdata *)0xfe12) //P2口上拉電阻控制寄存器
#define P3PU (*(unsigned char volatile xdata *)0xfe13) //P3口上拉電阻控制寄存器
#define P4PU (*(unsigned char volatile xdata *)0xfe14) //P4口上拉電阻控制寄存器
#define P5PU (*(unsigned char volatile xdata *)0xfe15) //P5口上拉電阻控制寄存器
#define P6PU (*(unsigned char volatile xdata *)0xfe16) //P6口上拉電阻控制寄存器
#define P7PU (*(unsigned char volatile xdata *)0xfe17) //P7口上拉電阻控制寄存器
#define P0NCS (*(unsigned char volatile xdata *)0xfe18) //P0口施密特觸發(fā)控制寄存器
#define P1NCS (*(unsigned char volatile xdata *)0xfe19) //P1口施密特觸發(fā)控制寄存器
#define P2NCS (*(unsigned char volatile xdata *)0xfe1a) //P2口施密特觸發(fā)控制寄存器
#define P3NCS (*(unsigned char volatile xdata *)0xfe1b) //P3口施密特觸發(fā)控制寄存器
#define P4NCS (*(unsigned char volatile xdata *)0xfe1c) //P4口施密特觸發(fā)控制寄存器
#define P5NCS (*(unsigned char volatile xdata *)0xfe1d) //P5口施密特觸發(fā)控制寄存器
#define P6NCS (*(unsigned char volatile xdata *)0xfe1e) //P6口施密特觸發(fā)控制寄存器
#define P7NCS (*(unsigned char volatile xdata *)0xfe1f) //P7口施密特觸發(fā)控制寄存器
//系統(tǒng)管理特殊功能寄存器
sfr PCON = 0x87; //電源控制寄存器
#define SMOD 0x80 //-串口1波特率控制位
#define SMOD0 0x40 //-幀錯(cuò)誤檢測(cè)控制位
#define LVDF 0x20 //-低壓檢測(cè)標(biāo)志位
#define POF 0x10 //-上電標(biāo)志位
#define GF1 0x08
#define GF0 0x04
#define PD 0x02 //-掉電模式控制位
#define IDL 0x01 //-IDLE(空閑)模式控制位
sfr AUXR = 0x8e; //輔助寄存器
#define T0x12 0x80 //-定時(shí)器0速度控制位
#define T1x12 0x40 //定時(shí)器1速度控制位
#define UART_M0x6 0x20 //-串口1模式0的通訊速度控制位
#define T2R 0x10 //-定時(shí)器2的運(yùn)行控制位
#define T2_CT 0x08 //-定時(shí)器0用作定時(shí)器或計(jì)數(shù)器控制位
#define T2x12 0x04 //-定時(shí)器2速度控制位
#define EXTRAM 0x02 //-擴(kuò)展RAM訪問控制位
#define S1ST2 0x01 //-串口1波特率發(fā)射器選擇位
sfr AUXR2 = 0x97; //輔助寄存器2
#define TXLNRX 0x10 //-串口1中繼廣播方式控制位
sfr BUS_SPEED = 0xa1; //總線速度控制寄存器
sfr P_SW1 = 0xa2; //外設(shè)端口切換寄存器1
sfr P_SW2 = 0xba; //外設(shè)端口切換寄存器2
#define EAXFR 0x80
sfr VOCTRL = 0xbb; //電壓控制寄存器
sfr RSTCFG = 0xff; //復(fù)位配置寄存器
//如下特殊功能寄存器位于擴(kuò)展RAM區(qū)域
//訪問這些寄存器,需先將P_SW2的BIT7設(shè)置為1,才可正常讀寫
#define CKSEL (*(unsigned char volatile xdata *)0xfe00) //時(shí)鐘選擇寄存器
#define CKDIV (*(unsigned char volatile xdata *)0xfe01) //時(shí)鐘分頻寄存器(DUP)
#define CLKDIV (*(unsigned char volatile xdata *)0xfe01) //時(shí)鐘分頻寄存器
#define IRC24MCR (*(unsigned char volatile xdata *)0xfe02) //內(nèi)部24M振蕩器控制寄存器
#define XOSCCR (*(unsigned char volatile xdata *)0xfe03) //外部晶振控制寄存器
#define IRC32KCR (*(unsigned char volatile xdata *)0xfe04) //內(nèi)部32K振蕩器控制寄存器
//中斷特殊功能寄存器
sfr IE = 0xa8; //中斷允許寄存器
sbit EA = IE^7; //-總中斷允許控制位
sbit ELVD = IE^6; //-低壓檢測(cè)中斷允許位
sbit EADC = IE^5; //-A/D轉(zhuǎn)換中斷允許位
sbit ES = IE^4; //-串行口1中斷允許位
sbit ET1 = IE^3; //-定時(shí)/計(jì)數(shù)器T1的溢出中斷允許位
sbit EX1 = IE^2; //-外部中斷1中斷允許位
sbit ET0 = IE^1; //-定時(shí)/計(jì)數(shù)器T0的溢出中斷允許位
sbit EX0 = IE^0; //-外部中斷0中斷允許位
sfr IE2 = 0xaf; //中斷允許寄存器2
#define ET4 0x40 //-定時(shí)/計(jì)數(shù)器T4的溢出中斷允許位
#define ET3 0x20 //-定時(shí)/計(jì)數(shù)器T3的溢出中斷允許位
#define ES4 0x10 //-串行口4中斷允許位
#define ES3 0x08 //-串行口3中斷允許位
#define ET2 0x04 //定時(shí)/計(jì)數(shù)器T2的溢出中斷允許位
#define ESPI 0x02 //SPI中斷允許位
#define ES2 0x01 //串行口2中斷允許位
sfr IP = 0xb8; //中斷優(yōu)先級(jí)控制寄存器
sbit PPCA = IP^7; //-CCP/PCA中斷優(yōu)先級(jí)控制位
sbit PLVD = IP^6; //-低壓檢測(cè)中斷優(yōu)先級(jí)控制位
sbit PADC = IP^5; //-ADC中斷優(yōu)先級(jí)控制位
sbit PS = IP^4; //-串口1中斷優(yōu)先級(jí)控制位
sbit PT1 = IP^3; //-定時(shí)器1中斷優(yōu)先級(jí)控制位
sbit PX1 = IP^2; //-外部中斷1中斷優(yōu)先級(jí)控制位
sbit PT0 = IP^1; //-定時(shí)器0中斷優(yōu)先級(jí)控制位
sbit PX0 = IP^0; //-外部中斷0中斷優(yōu)先級(jí)控制位
sfr IP2 = 0xb5; //中斷優(yōu)先級(jí)控制寄存器2
#define PI2C 0x40 //-I2C中斷優(yōu)先級(jí)控制位
#define PCMP 0x20 //-比較器中斷優(yōu)先級(jí)控制位
#define PX4 0x10 //-外部中斷4中斷優(yōu)先級(jí)控制位
#define PPWMFD 0x08 //-強(qiáng)型PWM異常檢測(cè)中斷優(yōu)先級(jí)控制位
#define PPWM 0x04 //-增強(qiáng)型PWM中斷優(yōu)先級(jí)控制位
#define PSPI 0x02 //-SPI中斷優(yōu)先級(jí)控制位
#define PS2 0x01 //-串口2中斷優(yōu)先級(jí)控制位
sfr IPH = 0xb7; //高中斷優(yōu)先級(jí)控制寄存器
#define PPCAH 0x80 //-CCP/PCA中斷優(yōu)先級(jí)控制位
#define PLVDH 0x40 //-低壓檢測(cè)中斷優(yōu)先級(jí)控制位
#define PADCH 0x20 //-ADC中斷優(yōu)先級(jí)控制位
#define PSH 0x10 //-串口1中斷優(yōu)先級(jí)控制位
#define PT1H 0x08 //-定時(shí)器1中斷優(yōu)先級(jí)控制位
#define PX1H 0x04 //-外部中斷1中斷優(yōu)先級(jí)控制位
#define PT0H 0x02 //-定時(shí)器0中斷優(yōu)先級(jí)控制位
#define PX0H 0x01 //-外部中斷0中斷優(yōu)先級(jí)控制位
sfr IP2H = 0xb6; //高中斷優(yōu)先級(jí)控制寄存器2
#define PI2CH 0x40 //-I2C中斷優(yōu)先級(jí)控制位
#define PCMPH 0x20 //-比較器中斷優(yōu)先級(jí)控制位
#define PX4H 0x10 //-外部中斷4中斷優(yōu)先級(jí)控制位
#define PPWMFDH 0x08 //-增強(qiáng)型PWM異常檢測(cè)中斷優(yōu)先級(jí)控制位
#define PPWMH 0x04 //-增強(qiáng)型PWM中斷優(yōu)先級(jí)控制位
#define PSPIH 0x02 //-SPI中斷優(yōu)先級(jí)控制位
#define PS2H 0x01 //-串口2中斷優(yōu)先級(jí)控制位
sfr INTCLKO = 0x8f; //中斷與時(shí)鐘輸出控制寄存器
#define EX4 0x40 //-外部中斷4中斷允許位
#define EX3 0x20 //-外部中斷3中斷允許位
#define EX2 0x10 //-外部中斷2中斷允許位
#define T2CLKO 0x04 //-定時(shí)器2時(shí)鐘輸出控制
#define T1CLKO 0x02 //-定時(shí)器1時(shí)鐘輸出控制
#define T0CLKO 0x01 //-定時(shí)器0時(shí)鐘輸出控制
sfr AUXINTIF = 0xef; //擴(kuò)展外部中斷標(biāo)志寄存器
#define INT4IF 0x40 //-外部中斷4中斷請(qǐng)求標(biāo)志
#define INT3IF 0x20 //外部中斷3中斷請(qǐng)求標(biāo)志
#define INT2IF 0x10 //外部中斷2中斷請(qǐng)求標(biāo)志
#define T4IF 0x04 //-定時(shí)器4溢出中斷標(biāo)志
#define T3IF 0x02 //-定時(shí)器3溢出中斷標(biāo)志
#define T2IF 0x01 //-定時(shí)器2溢出中斷標(biāo)志
//定時(shí)器特殊功能寄存器
sfr TCON = 0x88; //定時(shí)器控制寄存器
sbit TF1 = TCON^7; //-T1溢出中斷標(biāo)志
sbit TR1 = TCON^6; //-定時(shí)器T1的運(yùn)行控制位
sbit TF0 = TCON^5; //-T0溢出中斷標(biāo)志
sbit TR0 = TCON^4; //-定時(shí)器T0的運(yùn)行控制位
sbit IE1 = TCON^3; //-外部中斷1請(qǐng)求源(INT1/P3.3)標(biāo)志
sbit IT1 = TCON^2; //-外部中斷源1觸發(fā)控制位
sbit IE0 = TCON^1; //-外部中斷0請(qǐng)求源(INT0/P3.2)標(biāo)志
sbit IT0 = TCON^0; //-外部中斷源0觸發(fā)控制位
sfr TMOD = 0x89; //定時(shí)器模式寄存器
#define T1_GATE 0x80 //-控制定時(shí)器
#define T1_CT 0x40 //-控制定時(shí)器1用作定時(shí)器或計(jì)數(shù)器
#define T1_M1 0x20 //定時(shí)器定時(shí)器/計(jì)數(shù)器1模式選擇1
#define T1_M0 0x10 //定時(shí)器定時(shí)器/計(jì)數(shù)器1模式選擇0
#define T0_GATE 0x08 //-控制定時(shí)器0
#define T0_CT 0x04 //-控制定時(shí)器0用作定時(shí)器或計(jì)數(shù)器
#define T0_M1 0x02 //定時(shí)器定時(shí)器/計(jì)數(shù)器0模式選擇1
#define T0_M0 0x01 //定時(shí)器定時(shí)器/計(jì)數(shù)器0模式選擇0
sfr TL0 = 0x8a; //定時(shí)器0低8位寄存器
sfr TL1 = 0x8b; //定時(shí)器1低8位寄存器
sfr TH0 = 0x8c; //定時(shí)器0高8位寄存器
sfr TH1 = 0x8d; //定時(shí)器1高8位寄存器
sfr T4T3M = 0xd1; //定時(shí)器4/3控制寄存器
#define T4R 0x80 //-定時(shí)器4的運(yùn)行控制位
#define T4_CT 0x40 //-控制定時(shí)器4用作定時(shí)器或計(jì)數(shù)器
#define T4x12 0x20 //-定時(shí)器4速度控制位
#define T4CLKO 0x10 //-定時(shí)器4時(shí)鐘輸出控制
#define T3R 0x08 //-定時(shí)器3的運(yùn)行控制位
#define T3_CT 0x04 //-控制定時(shí)器3用作定時(shí)器或計(jì)數(shù)器
#define T3x12 0x02 //-定時(shí)器3速度控制位
#define T3CLKO 0x01 //-定時(shí)器3時(shí)鐘輸出控制
sfr T4H = 0xd2; //定時(shí)器4高字節(jié)
sfr T4L = 0xd3; //定時(shí)器4低字節(jié)
sfr T3H = 0xd4; //定時(shí)器3高字節(jié)
sfr T3L = 0xd5; //定時(shí)器3低字節(jié)
sfr T2H = 0xd6; //定時(shí)器2高字節(jié)
sfr T2L = 0xd7; //定時(shí)器2低字節(jié)
sfr TH4 = 0xd2;
sfr TL4 = 0xd3;
sfr TH3 = 0xd4;
sfr TL3 = 0xd5;
sfr TH2 = 0xd6;
sfr TL2 = 0xd7;
sfr WKTCL = 0xaa; //掉電喚醒定時(shí)器低字節(jié)
sfr WKTCH = 0xab; //掉電喚醒定時(shí)器高字節(jié)
#define WKTEN 0x80 //-掉電喚醒定時(shí)器的使能控制位
sfr WDT_CONTR = 0xc1; //看門狗控制寄存器
#define WDT_FLAG 0x80 //-看門狗溢出標(biāo)志
#define EN_WDT 0x20 //-看門狗使能位
#define CLR_WDT 0x10 //-看門狗定時(shí)器清零
#define IDL_WDT 0x08 //-IDLE模式時(shí)的看門狗控制位
//串行口特殊功能寄存器
sfr SCON = 0x98; //串口1控制寄存器
sbit SM0 = SCON^7; //-串口1的通信工作模式控制0
sbit SM1 = SCON^6; //-串口1的通信工作模式控制1
sbit SM2 = SCON^5; //-允許模式2或模式3多機(jī)通信控制位
sbit REN = SCON^4; //-允許/禁止串口接收控制位
sbit TB8 = SCON^3; //-當(dāng)串口1使用模式2或模式3時(shí),TB8為要發(fā)送的第9位數(shù)據(jù)
sbit RB8 = SCON^2; //-當(dāng)串口1使用模式2或模式3時(shí),RB8為接收到的第9位數(shù)據(jù)
sbit TI = SCON^1; //-串口1發(fā)送中斷請(qǐng)求標(biāo)志位
sbit RI = SCON^0; //-串口1接收中斷請(qǐng)求標(biāo)志位
sfr SBUF = 0x99; //串口1數(shù)據(jù)寄存器
sfr S2CON = 0x9a; //串口2控制寄存器
#define S2SM0 0x80 //-串口2的通信工作模式控制位
#define S2ST4 0x40
#define S2SM2 0x20 //-允許串口2在模式1時(shí)允許多機(jī)通信控制位
#define S2REN 0x10 //-串口2允許/禁止串口接收控制位
#define S2TB8 0x08 //-當(dāng)串口2使用模式1時(shí),S2TB8為要發(fā)送的第9位數(shù)據(jù)
#define S2RB8 0x04 //-當(dāng)串口2使用模式1時(shí),S2RB8為接收到的第9位數(shù)據(jù)
#define S2TI 0x02 //-串口2發(fā)送中斷請(qǐng)求標(biāo)志位
#define S2RI 0x01 //-串口2接收中斷請(qǐng)求標(biāo)志位
sfr S2BUF = 0x9b; //串口2數(shù)據(jù)寄存器
sfr S3CON = 0xac; //串口3控制寄存器
#define S3SM0 0x80 //-串口3的通信工作模式控制位
#define S3ST4 0x40
#define S3SM2 0x20 //-允許串口3在模式1時(shí)允許多機(jī)通信控制位
#define S3REN 0x10 //-串口3允許/禁止串口接收控制位
#define S3TB8 0x08 //-當(dāng)串口3使用模式1時(shí),S3TB8為要發(fā)送的第9位數(shù)據(jù)
#define S3RB8 0x04 //-當(dāng)串口3使用模式1時(shí),S3RB8為接收到的第9位數(shù)據(jù)
#define S3TI 0x02 //-串口3發(fā)送中斷請(qǐng)求標(biāo)志位
#define S3RI 0x01 //-串口3接收中斷請(qǐng)求標(biāo)志位
sfr S3BUF = 0xad; //串口3數(shù)據(jù)寄存器
sfr S4CON = 0x84; //串口4控制寄存器
#define S4SM0 0x80 //-串口4的通信工作模式控制位
#define S4ST4 0x40 //-選擇串口4的波特率發(fā)生器
#define S4SM2 0x20 //-允許串口4在模式1時(shí)允許多機(jī)通信控制位
#define S4REN 0x10 //-串口4允許/禁止串口接收控制位
#define S4TB8 0x08 //-當(dāng)串口4使用模式1時(shí),S3TB8為要發(fā)送的第9位數(shù)據(jù)
#define S4RB8 0x04 //-當(dāng)串口4使用模式1時(shí),S3RB8為接收到的第9位數(shù)據(jù)
#define S4TI 0x02 //-串口4發(fā)送中斷請(qǐng)求標(biāo)志位
#define S4RI 0x01 //-串口4接收中斷請(qǐng)求標(biāo)志位
sfr S4BUF = 0x85; //串口4數(shù)據(jù)寄存器
sfr SADDR = 0xa9; //串口1從機(jī)地址寄存器
sfr SADEN = 0xb9; //串口1從機(jī)地址屏蔽寄存器
//ADC 特殊功能寄存器
sfr ADC_CONTR = 0xbc; //ADC控制寄存器
#define ADC_POWER 0x80 //-ADC電源控制位
#define ADC_START 0x40 //-ADC轉(zhuǎn)換啟動(dòng)控制位
#define ADC_FLAG 0x20 //-ADC轉(zhuǎn)換完成中斷請(qǐng)求標(biāo)志
sfr ADC_RES = 0xbd; //ADC轉(zhuǎn)換結(jié)果高位寄存器
sfr ADC_RESL = 0xbe; //ADC轉(zhuǎn)換結(jié)果低位寄存器
sfr ADCCFG = 0xde; //ADC配置寄存器
#define ADC_RESFMT 0x20 //-ADC轉(zhuǎn)換結(jié)果格式控制位
//SPI 特殊功能寄存器
sfr SPSTAT = 0xcd; //SPI狀態(tài)寄存器
#define SPIF 0x80 //-SPI中斷標(biāo)志位
#define WCOL 0x40 //-SPI寫沖突標(biāo)志位
sfr SPCTL = 0xce; //SPI控制寄存器
#define SSIG 0x80 //-SS引腳功能控制位
#define SPEN 0x40 //-SPI使能控制位
#define DORD 0x20 //-SPI數(shù)據(jù)位發(fā)送/接收的順序
#define MSTR 0x10 //-器件主/從模式選擇位
#define CPOL 0x08 //-SPI時(shí)鐘極性控制
#define CPHA 0x04 //-SPI時(shí)鐘相位控制
sfr SPDAT = 0xcf; //數(shù)據(jù)寄存器
//IAP/ISP 特殊功能寄存器
sfr IAP_DATA = 0xc2; //IAP數(shù)據(jù)寄存器
sfr IAP_ADDRH = 0xc3; //IAP高地址寄存器
sfr IAP_ADDRL = 0xc4; //IAP低地址寄存器
sfr IAP_CMD = 0xc5; //IAP命令寄存器
#define IAP_IDL 0x00 //IAP_空操作
#define IAP_READ 0x01 //IAP_讀
#define IAP_WRITE 0x02 //IAP_寫
#define IAP_ERASE 0x03 //IAP_擦除
sfr IAP_TRIG = 0xc6; //IAP觸發(fā)寄存器
sfr IAP_CONTR = 0xc7; //IAP控制寄存器
#define IAPEN 0x80 //-EEPROM操作使能控制位
#define SWBS 0x40 //-軟件復(fù)位選擇控制位
#define SWRST 0x20 //-軟件復(fù)位控制位
#define CMD_FAIL 0x10 //-EEPROM操作失敗狀態(tài)位
sfr ISP_DATA = 0xc2; //ISP數(shù)據(jù)寄存器
sfr ISP_ADDRH = 0xc3; //ISP高地址寄存器
sfr ISP_ADDRL = 0xc4; //ISP低地址寄存器
sfr ISP_CMD = 0xc5; //ISP命令寄存器
sfr ISP_TRIG = 0xc6; //ISP觸發(fā)寄存器
sfr ISP_CONTR = 0xc7; //ISP控制寄存器
//比較器特殊功能寄存器
sfr CMPCR1 = 0xe6; //比較器控制寄存器1
#define CMPEN 0x80 //-比較器模塊使能位
#define CMPIF 0x40 //-比較器中斷標(biāo)志位
#define PIE 0x20 //-比較器上升沿中斷使能位
#define NIE 0x10 //-比較器下降沿中斷使能位
#define PIS 0x08 //-比較器的正極選擇位
#define NIS 0x04 //-比較器的負(fù)極選擇位
#define CMPOE 0x02 //-比較器結(jié)果輸出控制位
#define CMPRES 0x01 //-比較器的比較結(jié)果
sfr CMPCR2 = 0xe7; //比較器控制寄存器2
#define INVCMPO 0x80 //-比較器結(jié)果輸出控制
#define DISFLT 0x40 //-模擬濾波功能控制
//PCA/PWM 特殊功能寄存器
sfr CCON = 0xd8; //PCA控制寄存器
sbit CF = CCON^7; //-PCA計(jì)數(shù)器溢出中斷標(biāo)志
sbit CR = CCON^6; //-PCA計(jì)數(shù)器允許控制位
sbit CCF3 = CCON^3; //-PCA模塊3中斷請(qǐng)求標(biāo)志
sbit CCF2 = CCON^2; //-PCA模塊2中斷請(qǐng)求標(biāo)志
sbit CCF1 = CCON^1; //-PCA模塊1中斷請(qǐng)求標(biāo)志
sbit CCF0 = CCON^0; //-PCA模塊0中斷請(qǐng)求標(biāo)志
sfr CMOD = 0xd9; //PCA模式寄存器
#define CIDL 0x80 //-空閑模式下是否停止PCA計(jì)數(shù)
#define ECF 0x01 //PCA計(jì)數(shù)器溢出中斷允許位
sfr CL = 0xe9; //PCA計(jì)數(shù)器低字節(jié)
sfr CH = 0xf9; //PCA計(jì)數(shù)器高字節(jié)
sfr CCAPM0 = 0xda; //PCA模塊0模式控制寄存器
#define ECOM0 0x40 //允許PCA模塊0的比較功能
#define CCAPP0 0x20 //允許PCA模塊0進(jìn)行上升沿捕獲
#define CCAPN0 0x10 //允許PCA模塊0進(jìn)行下降沿捕獲
#define MAT0 0x08 //允許PCA模塊0的匹配功能
#define TOG0 0x04 //允許PCA模塊0的高速脈沖輸出功能
#define PWM0 0x02 //允許PCA模塊0的脈寬調(diào)制輸出功能
#define ECCF0 0x01 //允許PCA模塊0的匹配/捕獲中斷
sfr CCAPM1 = 0xdb; //PCA模塊1模式控制寄存器
#define ECOM1 0x40 //允許PCA模塊1的比較功能
#define CCAPP1 0x20 //允許PCA模塊1進(jìn)行上升沿捕獲
#define CCAPN1 0x10 //允許PCA模塊1進(jìn)行下降沿捕獲
#define MAT1 0x08 //允許PCA模塊1的匹配功能
#define TOG1 0x04 //允許PCA模塊1的高速脈沖輸出功能
#define PWM1 0x02 //允許PCA模塊1的脈寬調(diào)制輸出功能
#define ECCF1 0x01 //允許PCA模塊1的匹配/捕獲中斷
sfr CCAPM2 = 0xdc; //PCA模塊2模式控制寄存器
#define ECOM2 0x40 //允許PCA模塊2的比較功能
#define CCAPP2 0x20 //允許PCA模塊2進(jìn)行上升沿捕獲
#define CCAPN2 0x10 //允許PCA模塊2進(jìn)行下降沿捕獲
#define MAT2 0x08 //允許PCA模塊2的匹配功能
#define TOG2 0x04 //允許PCA模塊2的高速脈沖輸出功能
#define PWM2 0x02 //允許PCA模塊2的脈寬調(diào)制輸出功能
#define ECCF2 0x01 //允許PCA模塊2的匹配/捕獲中斷
sfr CCAPM3 = 0xdd; //PCA模塊3模式控制寄存器
#define ECOM3 0x40 //-允許PCA模塊3的比較功能
#define CCAPP3 0x20 //-允許PCA模塊3進(jìn)行上升沿捕獲
#define CCAPN3 0x10 //-允許PCA模塊3進(jìn)行下降沿捕獲
#define MAT3 0x08 //-允許PCA模塊3的匹配功能
#define TOG3 0x04 //-允許PCA模塊3的高速脈沖輸出功能
#define PWM3 0x02 //-允許PCA模塊3的脈寬調(diào)制輸出功能
#define ECCF3 0x01 //-允許PCA模塊3的匹配/捕獲中斷
sfr CCAP0L = 0xea; //PCA模塊0低字節(jié)
sfr CCAP1L = 0xeb; //PCA模塊1低字節(jié)
sfr CCAP2L = 0xec; //PCA模塊2低字節(jié)
sfr CCAP3L = 0xed; //PCA模塊3低字節(jié)
sfr CCAP0H = 0xfa; //PCA模塊0高字節(jié)
sfr CCAP1H = 0xfb; //PCA模塊1高字節(jié)
sfr CCAP2H = 0xfc; //PCA模塊2高字節(jié)
sfr CCAP3H = 0xfd; //PCA模塊3高字節(jié)
sfr PCA_PWM0 = 0xf2; //PCA0的PWM模式寄存器
sfr PCA_PWM1 = 0xf3; //PCA1的PWM模式寄存器
sfr PCA_PWM2 = 0xf4; //PCA2的PWM模式寄存器
sfr PCA_PWM3 = 0xf5; //PCA3的PWM模式寄存器
//增強(qiáng)型PWM波形發(fā)生器特殊功能寄存器
sfr PWMCFG = 0xf1; //PWM計(jì)數(shù)器
#define CBIF 0x80 //-增強(qiáng)型PWM計(jì)數(shù)器中斷請(qǐng)求標(biāo)志
#define ETADC 0x40 //-PWM是否與ADC關(guān)聯(lián)
sfr PWMIF = 0xf6; //增強(qiáng)型PWM中斷標(biāo)志寄存器
#define C7IF 0x80 //增強(qiáng)型PWM通道7中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C6IF 0x40 //增強(qiáng)型PWM通道6中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C5IF 0x20 //增強(qiáng)型PWM通道5中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C4IF 0x10 //增強(qiáng)型PWM通道4中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C3IF 0x08 //增強(qiáng)型PWM通道3中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C2IF 0x04 //增強(qiáng)型PWM通道2中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C1IF 0x02 //增強(qiáng)型PWM通道1中斷請(qǐng)求標(biāo)志(需要軟件清零)
#define C0IF 0x01 //增強(qiáng)型PWM通道0中斷請(qǐng)求標(biāo)志(需要軟件清零)
sfr PWMFDCR = 0xf7; //PWM異常檢測(cè)控制寄存器
#define INVCMP 0x80 //-比較器器結(jié)果異常信號(hào)處理
#define INVIO 0x40 //-外部端口P3.5異常信號(hào)處理
#define ENFD 0x20 //-PWM外部異常檢測(cè)控制位
#define FLTFLIO 0x10 //-發(fā)生PWM外部異常時(shí)對(duì)PWM輸出口控制位
#define EFDI 0x08 //-PWM異常檢測(cè)中斷使能位
#define FDCMP 0x04 //-比較器輸出異常檢測(cè)使能位
#define FDIO 0x02 //-P3.5口電平異常檢測(cè)使能位
#define FDIF 0x01 //-增強(qiáng)型PWM異常檢測(cè)中斷請(qǐng)求標(biāo)志
sfr PWMCR = 0xfe; //PWM控制寄存器
#define ENPWM 0x80 //-增強(qiáng)型PWM波形發(fā)生器使能位
#define ECBI 0x40 //-PWM計(jì)數(shù)器歸零中斷使能位
//如下特殊功能寄存器位于擴(kuò)展RAM區(qū)域
//訪問這些寄存器,需先將P_SW2的BIT7設(shè)置為1,才可正常讀寫
#define PWMC (*(unsigned int volatile xdata *)0xfff0) //PWM計(jì)數(shù)器
#define PWMCH (*(unsigned char volatile xdata *)0xfff0) //PWM計(jì)數(shù)器高字節(jié)
#define PWMCL (*(unsigned char volatile xdata *)0xfff1) //PWM計(jì)數(shù)器低字節(jié)
#define PWMCKS (*(unsigned char volatile xdata *)0xfff2) //PWM時(shí)鐘選擇
#define TADCP (*(unsigned char volatile xdata *)0xfff3) //觸發(fā)ADC計(jì)數(shù)值
#define TADCPH (*(unsigned char volatile xdata *)0xfff3) //觸發(fā)ADC計(jì)數(shù)值高字節(jié)
#define TADCPL (*(unsigned char volatile xdata *)0xfff4) //觸發(fā)ADC計(jì)數(shù)值低字節(jié)
#define PWM0T1 (*(unsigned int volatile xdata *)0xff00) //PWM0T1計(jì)數(shù)值
#define PWM0T1H (*(unsigned char volatile xdata *)0xff00) //PWM0T1計(jì)數(shù)值高字節(jié)
#define PWM0T1L (*(unsigned char volatile xdata *)0xff01) //PWM0T1計(jì)數(shù)值低字節(jié)
#define PWM0T2 (*(unsigned int volatile xdata *)0xff02) //PWM0T2數(shù)值
#define PWM0T2H (*(unsigned char volatile xdata *)0xff02) //PWM0T2數(shù)值高字節(jié)
#define PWM0T2L (*(unsigned char volatile xdata *)0xff03) //PWM0T2數(shù)值低字節(jié)
#define PWM0CR (*(unsigned char volatile xdata *)0xff04) //PWM0控制寄存器
#define PWM0HLD (*(unsigned char volatile xdata *)0xff05) //PWM0電平保持控制寄存器
#define PWM1T1 (*(unsigned int volatile xdata *)0xff10) //PWM1T1計(jì)數(shù)值
#define PWM1T1H (*(unsigned char volatile xdata *)0xff10) //PWM1T1計(jì)數(shù)值高字節(jié)
#define PWM1T1L (*(unsigned char volatile xdata *)0xff11) //PWM1T1計(jì)數(shù)值低字節(jié)
#define PWM1T2 (*(unsigned int volatile xdata *)0xff12) //PWM1T2數(shù)值
#define PWM1T2H (*(unsigned char volatile xdata *)0xff12) //PWM1T2數(shù)值高字節(jié)
#define PWM1T2L (*(unsigned char volatile xdata *)0xff13) //PWM1T2數(shù)值低字節(jié)
#define PWM1CR (*(unsigned char volatile xdata *)0xff14) //PWM1控制寄存器
#define PWM1HLD (*(unsigned char volatile xdata *)0xff15) //PWM1電平保持控制寄存器
#define PWM2T1 (*(unsigned int volatile xdata *)0xff20) //PWM2T1計(jì)數(shù)值
#define PWM2T1H (*(unsigned char volatile xdata *)0xff20) //PWM2T1計(jì)數(shù)值高字節(jié)
#define PWM2T1L (*(unsigned char volatile xdata *)0xff21) //PWM2T1計(jì)數(shù)值低字節(jié)
#define PWM2T2 (*(unsigned int volatile xdata *)0xff22) //PWM2T2數(shù)值
#define PWM2T2H (*(unsigned char volatile xdata *)0xff22) //PWM2T2數(shù)值高字節(jié)
#define PWM2T2L (*(unsigned char volatile xdata *)0xff23) //PWM2T2數(shù)值低字節(jié)
#define PWM2CR (*(unsigned char volatile xdata *)0xff24) //PWM2控制寄存器
#define PWM2HLD (*(unsigned char volatile xdata *)0xff25) //PWM2電平保持控制寄存器
#define PWM3T1 (*(unsigned int volatile xdata *)0xff30) //PWM3T1計(jì)數(shù)值
#define PWM3T1H (*(unsigned char volatile xdata *)0xff30) //PWM3T1計(jì)數(shù)值高字節(jié)
#define PWM3T1L (*(unsigned char volatile xdata *)0xff31) //PWM3T1計(jì)數(shù)值低字節(jié)
#define PWM3T2 (*(unsigned int volatile xdata *)0xff32) //PWM3T2數(shù)值
#define PWM3T2H (*(unsigned char volatile xdata *)0xff32) //PWM3T2數(shù)值高字節(jié)
#define PWM3T2L (*(unsigned char volatile xdata *)0xff33) //PWM3T2數(shù)值低字節(jié)
#define PWM3CR (*(unsigned char volatile xdata *)0xff34) //PWM3控制寄存器
#define PWM3HLD (*(unsigned char volatile xdata *)0xff35) //PWM3電平保持控制寄存器
#define PWM4T1 (*(unsigned int volatile xdata *)0xff40) //PWM4T1計(jì)數(shù)值
#define PWM4T1H (*(unsigned char volatile xdata *)0xff40) //PWM4T1計(jì)數(shù)值高字節(jié)
#define PWM4T1L (*(unsigned char volatile xdata *)0xff41) //PWM4T1計(jì)數(shù)值低字節(jié)
#define PWM4T2 (*(unsigned int volatile xdata *)0xff42) //PWM4T2數(shù)值
#define PWM4T2H (*(unsigned char volatile xdata *)0xff42) //PWM4T2數(shù)值高字節(jié)
#define PWM4T2L (*(unsigned char volatile xdata *)0xff43) //PWM4T2數(shù)值低字節(jié)
#define PWM4CR (*(unsigned char volatile xdata *)0xff44) //PWM4控制寄存器
#define PWM4HLD (*(unsigned char volatile xdata *)0xff45) //PWM4電平保持控制寄存器
#define PWM5T1 (*(unsigned int volatile xdata *)0xff50) //PWM5T1計(jì)數(shù)值
#define PWM5T1H (*(unsigned char volatile xdata *)0xff50) //PWM5T1計(jì)數(shù)值高字節(jié)
#define PWM5T1L (*(unsigned char volatile xdata *)0xff51) //PWM5T1計(jì)數(shù)值低字節(jié)
#define PWM5T2 (*(unsigned int volatile xdata *)0xff52) //PWM5T2數(shù)值
#define PWM5T2H (*(unsigned char volatile xdata *)0xff52) //PWM5T2數(shù)值高字節(jié)
#define PWM5T2L (*(unsigned char volatile xdata *)0xff53) //PWM5T2數(shù)值低字節(jié)
#define PWM5CR (*(unsigned char volatile xdata *)0xff54) //PWM5控制寄存器
#define PWM5HLD (*(unsigned char volatile xdata *)0xff55) //PWM5電平保持控制寄存器
#define PWM6T1 (*(unsigned int volatile xdata *)0xff60) //PWM6T1計(jì)數(shù)值
#define PWM6T1H (*(unsigned char volatile xdata *)0xff60) //PWM6T1計(jì)數(shù)值高字節(jié)
#define PWM6T1L (*(unsigned char volatile xdata *)0xff61) //PWM6T1計(jì)數(shù)值低字節(jié)
#define PWM6T2 (*(unsigned int volatile xdata *)0xff62) //PWM6T2數(shù)值
#define PWM6T2H (*(unsigned char volatile xdata *)0xff62) //PWM6T2數(shù)值高字節(jié)
#define PWM6T2L (*(unsigned char volatile xdata *)0xff63) //PWM6T2數(shù)值低字節(jié)
#define PWM6CR (*(unsigned char volatile xdata *)0xff64) //PWM6控制寄存器
#define PWM6HLD (*(unsigned char volatile xdata *)0xff65) //PWM6電平保持控制寄存器
#define PWM7T1 (*(unsigned int volatile xdata *)0xff70) //PWM7T1計(jì)數(shù)值
#define PWM7T1H (*(unsigned char volatile xdata *)0xff70) //PWM7T1計(jì)數(shù)值高字節(jié)
#define PWM7T1L (*(unsigned char volatile xdata *)0xff71) //PWM7T1計(jì)數(shù)值低字節(jié)
#define PWM7T2 (*(unsigned int volatile xdata *)0xff72) //PWM7T2數(shù)值
#define PWM7T2H (*(unsigned char volatile xdata *)0xff72) //PWM7T2數(shù)值高字節(jié)
#define PWM7T2L (*(unsigned char volatile xdata *)0xff73) //PWM7T2數(shù)值低字節(jié)
#define PWM7CR (*(unsigned char volatile xdata *)0xff74) //PWM7控制寄存器
#define PWM7HLD (*(unsigned char volatile xdata *)0xff75) //PWM7電平保持控制寄存器
//I2C特殊功能寄存器
//如下特殊功能寄存器位于擴(kuò)展RAM區(qū)域
//訪問這些寄存器,需先將P_SW2的BIT7設(shè)置為1,才可正常讀寫
#define I2CCFG (*(unsigned char volatile xdata *)0xfe80) //I2C配置寄存器
#define ENI2C 0x80 //-I2C功能使能控制位
#define MSSL 0x40 //-I2C工作模式選擇位
#define I2CMSCR (*(unsigned char volatile xdata *)0xfe81) //I2C主機(jī)控制寄存器
#define EMSI 0x80 //-I2C主機(jī)模式中斷使能控制位
#define I2CMSST (*(unsigned char volatile xdata *)0xfe82) //I2C主機(jī)狀態(tài)寄存器
#define MSBUSY 0x80 //-主機(jī)模式時(shí)I2C控制器狀態(tài)位(只讀位)
#define MSIF 0x40 //-主機(jī)模式的中斷請(qǐng)求位(中斷標(biāo)志位)
#define MSACKI 0x02 //-主機(jī)模式時(shí),發(fā)送“011”命令到I2CMSCR的MSCMD位后所接收到的ACK數(shù)據(jù)
#define MSACKO 0x01 //-主機(jī)模式時(shí),準(zhǔn)備將要發(fā)送出去的ACK信號(hào)
#define I2CSLCR (*(unsigned char volatile xdata *)0xfe83) //I2C從機(jī)控制寄存器
#define ESTAI 0x40 //-I2C從機(jī)接收START事件中斷允許位
#define ERXI 0x20 //-I2C從機(jī)接收數(shù)據(jù)完成事件中斷允許位
#define ETXI 0x10 //-I2C從機(jī)發(fā)送數(shù)據(jù)完成事件中斷允許位
#define ESTOI 0x08 //-從機(jī)模式時(shí)接收到STOP信號(hào)中斷允許位
#define SLRST 0x01 //-復(fù)位從機(jī)模式
#define I2CSLST (*(unsigned char volatile xdata *)0xfe84) //I2C從機(jī)狀態(tài)寄存器
#define SLBUSY 0x80 //-從機(jī)模式時(shí)I2C控制器狀態(tài)位(只讀位)
#define STAIF 0x40 //-從機(jī)模式時(shí)接收到START信號(hào)后的中斷請(qǐng)求
#define RXIF 0x20 //-從機(jī)模式時(shí)接收到1字節(jié)的數(shù)據(jù)后的中斷請(qǐng)
#define TXIF 0x10 //-從機(jī)模式時(shí)發(fā)送完成1字節(jié)的數(shù)據(jù)后的中斷
#define STOIF 0x08 //-從機(jī)模式時(shí)接收到STOP信號(hào)后的中斷請(qǐng)求
#define TXING 0x04
#define SLACKI 0x02 //-從機(jī)模式時(shí),接收到的ACK數(shù)據(jù)
#define SLACKO 0x01 //-從機(jī)模式時(shí),準(zhǔn)備將要發(fā)送出去的ACK信號(hào)
#define I2CSLADR (*(unsigned char volatile xdata *)0xfe85) //I2C從機(jī)地址寄存器
#define I2CTXD (*(unsigned char volatile xdata *)0xfe86) //I2C數(shù)據(jù)發(fā)送寄存器
#define I2CRXD (*(unsigned char volatile xdata *)0xfe87) //I2C數(shù)據(jù)接收寄存器
/////////////////////////////////////////////////
#endif
|
評(píng)分
-
查看全部評(píng)分
|