- #ifndef __STC15F2K60S2_H_
- #define __STC15F2K60S2_H_
- /////////////////////////////////////////////////
- //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
- // 高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
- //相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
- // P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
- /////////////////////////////////////////////////
- /////////////////////////////////////////////////
- //包含本頭文件后,不用另外再包含"REG51.H"
- //內核特殊功能寄存器 // 復位值 描述
- sfr ACC = 0xE0; //0000,0000 累加器Accumulator
- sfr B = 0xF0; //0000,0000 B寄存器
- sfr PSW = 0xD0; //0000,0000 程序狀態字
- 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;
- sfr SP = 0x81; //0000,0111 堆棧指針
- sfr DPL = 0x82; //0000,0000 數據指針低字節
- sfr DPH = 0x83; //0000,0000 數據指針高字節
- //I/O 口特殊功能寄存器
- sfr P0 = 0x80; //1111,1111 端口0
- 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;
- sfr P1 = 0x90; //1111,1111 端口1
- 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;
- sfr P2 = 0xA0; //1111,1111 端口2
- 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;
- sfr P3 = 0xB0; //1111,1111 端口3
- 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;
- sfr P4 = 0xC0; //1111,1111 端口4
- 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;
- sfr P5 = 0xC8; //xxxx,1111 端口5
- 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;
- sfr P6 = 0xE8; //0000,0000 端口6
- 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;
- sfr P7 = 0xF8; //0000,0000 端口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;
- sfr P0M0 = 0x94; //0000,0000 端口0模式寄存器0
- sfr P0M1 = 0x93; //0000,0000 端口0模式寄存器1
- sfr P1M0 = 0x92; //0000,0000 端口1模式寄存器0
- sfr P1M1 = 0x91; //0000,0000 端口1模式寄存器1
- sfr P2M0 = 0x96; //0000,0000 端口2模式寄存器0
- sfr P2M1 = 0x95; //0000,0000 端口2模式寄存器1
- sfr P3M0 = 0xB2; //0000,0000 端口3模式寄存器0
- sfr P3M1 = 0xB1; //0000,0000 端口3模式寄存器1
- sfr P4M0 = 0xB4; //0000,0000 端口4模式寄存器0
- sfr P4M1 = 0xB3; //0000,0000 端口4模式寄存器1
- sfr P5M0 = 0xCA; //0000,0000 端口5模式寄存器0
- sfr P5M1 = 0xC9; //0000,0000 端口5模式寄存器1
- sfr P6M0 = 0xCC; //0000,0000 端口6模式寄存器0
- sfr P6M1 = 0xCB; //0000,0000 端口6模式寄存器1
- sfr P7M0 = 0xE2; //0000,0000 端口7模式寄存器0
- sfr P7M1 = 0xE1; //0000,0000 端口7模式寄存器1
- //系統管理特殊功能寄存器
- sfr PCON = 0x87; //0001,0000 電源控制寄存器
- sfr AUXR = 0x8E; //0000,0000 輔助寄存器
- sfr AUXR1 = 0xA2; //0000,0000 輔助寄存器1
- sfr P_SW1 = 0xA2; //0000,0000 外設端口切換寄存器1
- sfr CLK_DIV = 0x97; //0000,0000 時鐘分頻控制寄存器
- sfr BUS_SPEED = 0xA1; //xx10,x011 總線速度控制寄存器
- sfr P1ASF = 0x9D; //0000,0000 端口1模擬功能配置寄存器
- sfr P_SW2 = 0xBA; //0xxx,x000 外設端口切換寄存器
- //中斷特殊功能寄存器
- sfr IE = 0xA8; //0000,0000 中斷控制寄存器
- sbit EA = IE^7;
- sbit ELVD = IE^6;
- sbit EADC = IE^5;
- sbit ES = IE^4;
- sbit ET1 = IE^3;
- sbit EX1 = IE^2;
- sbit ET0 = IE^1;
- sbit EX0 = IE^0;
- sfr IP = 0xB8; //0000,0000 中斷優先級寄存器
- sbit PPCA = IP^7;
- sbit PLVD = IP^6;
- sbit PADC = IP^5;
- sbit PS = IP^4;
- sbit PT1 = IP^3;
- sbit PX1 = IP^2;
- sbit PT0 = IP^1;
- sbit PX0 = IP^0;
- sfr IE2 = 0xAF; //0000,0000 中斷控制寄存器2
- sfr IP2 = 0xB5; //xxxx,xx00 中斷優先級寄存器2
- sfr INT_CLKO = 0x8F; //0000,0000 外部中斷與時鐘輸出控制寄存器
- //定時器特殊功能寄存器
- sfr TCON = 0x88; //0000,0000 T0/T1控制寄存器
- 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;
- sfr TMOD = 0x89; //0000,0000 T0/T1模式寄存器
- sfr TL0 = 0x8A; //0000,0000 T0低字節
- sfr TL1 = 0x8B; //0000,0000 T1低字節
- sfr TH0 = 0x8C; //0000,0000 T0高字節
- sfr TH1 = 0x8D; //0000,0000 T1高字節
- sfr T4T3M = 0xD1; //0000,0000 T3/T4模式寄存器
- sfr T3T4M = 0xD1; //0000,0000 T3/T4模式寄存器
- sfr T4H = 0xD2; //0000,0000 T4高字節
- sfr T4L = 0xD3; //0000,0000 T4低字節
- sfr T3H = 0xD4; //0000,0000 T3高字節
- sfr T3L = 0xD5; //0000,0000 T3低字節
- sfr T2H = 0xD6; //0000,0000 T2高字節
- sfr T2L = 0xD7; //0000,0000 T2低字節
- sfr WKTCL = 0xAA; //0000,0000 掉電喚醒定時器低字節
- sfr WKTCH = 0xAB; //0000,0000 掉電喚醒定時器高字節
- sfr WDT_CONTR = 0xC1; //0000,0000 看門狗控制寄存器
- //串行口特殊功能寄存器
- sfr SCON = 0x98; //0000,0000 串口1控制寄存器
- sbit SM0 = 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;
- sfr SBUF = 0x99; //xxxx,xxxx 串口1數據寄存器
- sfr S2CON = 0x9A; //0000,0000 串口2控制寄存器
- sfr S2BUF = 0x9B; //xxxx,xxxx 串口2數據寄存器
- sfr S3CON = 0xAC; //0000,0000 串口3控制寄存器
- sfr S3BUF = 0xAD; //xxxx,xxxx 串口3數據寄存器
- sfr S4CON = 0x84; //0000,0000 串口4控制寄存器
- sfr S4BUF = 0x85; //xxxx,xxxx 串口4數據寄存器
- sfr SADDR = 0xA9; //0000,0000 從機地址寄存器
- sfr SADEN = 0xB9; //0000,0000 從機地址屏蔽寄存器
- //ADC 特殊功能寄存器
- sfr ADC_CONTR = 0xBC; //0000,0000 A/D轉換控制寄存器
- sfr ADC_RES = 0xBD; //0000,0000 A/D轉換結果高8位
- sfr ADC_RESL = 0xBE; //0000,0000 A/D轉換結果低2位
- //SPI 特殊功能寄存器
- sfr SPSTAT = 0xCD; //00xx,xxxx SPI狀態寄存器
- sfr SPCTL = 0xCE; //0000,0100 SPI控制寄存器
- sfr SPDAT = 0xCF; //0000,0000 SPI數據寄存器
- //IAP/ISP 特殊功能寄存器
- sfr IAP_DATA = 0xC2; //0000,0000 EEPROM數據寄存器
- sfr IAP_ADDRH = 0xC3; //0000,0000 EEPROM地址高字節
- sfr IAP_ADDRL = 0xC4; //0000,0000 EEPROM地址第字節
- sfr IAP_CMD = 0xC5; //xxxx,xx00 EEPROM命令寄存器
- sfr IAP_TRIG = 0xC6; //0000,0000 EEPRPM命令觸發寄存器
- sfr IAP_CONTR = 0xC7; //0000,x000 EEPROM控制寄存器
- //PCA/PWM 特殊功能寄存器
- sfr CCON = 0xD8; //00xx,xx00 PCA控制寄存器
- sbit CF = CCON^7;
- sbit CR = CCON^6;
- sbit CCF2 = CCON^2;
- sbit CCF1 = CCON^1;
- sbit CCF0 = CCON^0;
- sfr CMOD = 0xD9; //0xxx,x000 PCA 工作模式寄存器
- sfr CL = 0xE9; //0000,0000 PCA計數器低字節
- sfr CH = 0xF9; //0000,0000 PCA計數器高字節
- sfr CCAPM0 = 0xDA; //0000,0000 PCA模塊0的PWM寄存器
- sfr CCAPM1 = 0xDB; //0000,0000 PCA模塊1的PWM寄存器
- sfr CCAPM2 = 0xDC; //0000,0000 PCA模塊2的PWM 寄存器
- sfr CCAP0L = 0xEA; //0000,0000 PCA模塊0的捕捉/比較寄存器低字節
- sfr CCAP1L = 0xEB; //0000,0000 PCA模塊1的捕捉/比較寄存器低字節
- sfr CCAP2L = 0xEC; //0000,0000 PCA模塊2的捕捉/比較寄存器低字節
- sfr PCA_PWM0 = 0xF2; //xxxx,xx00 PCA模塊0的PWM寄存器
- sfr PCA_PWM1 = 0xF3; //xxxx,xx00 PCA模塊1的PWM寄存器
- sfr PCA_PWM2 = 0xF4; //xxxx,xx00 PCA模塊1的PWM寄存器
- sfr CCAP0H = 0xFA; //0000,0000 PCA模塊0的捕捉/比較寄存器高字節
- sfr CCAP1H = 0xFB; //0000,0000 PCA模塊1的捕捉/比較寄存器高字節
- sfr CCAP2H = 0xFC; //0000,0000 PCA模塊2的捕捉/比較寄存器高字節
- //比較器特殊功能寄存器
- sfr CMPCR1 = 0xE6; //0000,0000 比較器控制寄存器1
- sfr CMPCR2 = 0xE7; //0000,0000 比較器控制寄存器2
- //增強型PWM波形發生器特殊功能寄存器
- sfr PWMCFG = 0xf1; //x000,0000 PWM配置寄存器
- sfr PWMCR = 0xf5; //0000,0000 PWM控制寄存器
- sfr PWMIF = 0xf6; //x000,0000 PWM中斷標志寄存器
- sfr PWMFDCR = 0xf7; //xx00,0000 PWM外部異常檢測控制寄存器
- //如下特殊功能寄存器位于擴展RAM區域
- //訪問這些寄存器,需先將P_SW2的BIT7設置為1,才可正常讀寫
- #define PWMC (*(unsigned int volatile xdata *)0xfff0)
- #define PWMCH (*(unsigned char volatile xdata *)0xfff0)
- #define PWMCL (*(unsigned char volatile xdata *)0xfff1)
- #define PWMCKS (*(unsigned char volatile xdata *)0xfff2)
- #define PWM2T1 (*(unsigned int volatile xdata *)0xff00)
- #define PWM2T1H (*(unsigned char volatile xdata *)0xff00)
- #define PWM2T1L (*(unsigned char volatile xdata *)0xff01)
- #define PWM2T2 (*(unsigned int volatile xdata *)0xff02)
- #define PWM2T2H (*(unsigned char volatile xdata *)0xff02)
- #define PWM2T2L (*(unsigned char volatile xdata *)0xff03)
- #define PWM2CR (*(unsigned char volatile xdata *)0xff04)
- #define PWM3T1 (*(unsigned int volatile xdata *)0xff10)
- #define PWM3T1H (*(unsigned char volatile xdata *)0xff10)
- #define PWM3T1L (*(unsigned char volatile xdata *)0xff11)
- #define PWM3T2 (*(unsigned int volatile xdata *)0xff12)
- #define PWM3T2H (*(unsigned char volatile xdata *)0xff12)
- #define PWM3T2L (*(unsigned char volatile xdata *)0xff13)
- #define PWM3CR (*(unsigned char volatile xdata *)0xff14)
- #define PWM4T1 (*(unsigned int volatile xdata *)0xff20)
- #define PWM4T1H (*(unsigned char volatile xdata *)0xff20)
- #define PWM4T1L (*(unsigned char volatile xdata *)0xff21)
- #define PWM4T2 (*(unsigned int volatile xdata *)0xff22)
- #define PWM4T2H (*(unsigned char volatile xdata *)0xff22)
- #define PWM4T2L (*(unsigned char volatile xdata *)0xff23)
- #define PWM4CR (*(unsigned char volatile xdata *)0xff24)
- #define PWM5T1 (*(unsigned int volatile xdata *)0xff30)
- #define PWM5T1H (*(unsigned char volatile xdata *)0xff30)
- #define PWM5T1L (*(unsigned char volatile xdata *)0xff31)
- #define PWM5T2 (*(unsigned int volatile xdata *)0xff32)
- #define PWM5T2H (*(unsigned char volatile xdata *)0xff32)
- #define PWM5T2L (*(unsigned char volatile xdata *)0xff33)
- #define PWM5CR (*(unsigned char volatile xdata *)0xff34)
- #define PWM6T1 (*(unsigned int volatile xdata *)0xff40)
- #define PWM6T1H (*(unsigned char volatile xdata *)0xff40)
- #define PWM6T1L (*(unsigned char volatile xdata *)0xff41)
- #define PWM6T2 (*(unsigned int volatile xdata *)0xff42)
- #define PWM6T2H (*(unsigned char volatile xdata *)0xff42)
- #define PWM6T2L (*(unsigned char volatile xdata *)0xff43)
- #define PWM6CR (*(unsigned char volatile xdata *)0xff44)
- #define PWM7T1 (*(unsigned int volatile xdata *)0xff50)
- #define PWM7T1H (*(unsigned char volatile xdata *)0xff50)
- #define PWM7T1L (*(unsigned char volatile xdata *)0xff51)
- #define PWM7T2 (*(unsigned int volatile xdata *)0xff52)
- #define PWM7T2H (*(unsigned char volatile xdata *)0xff52)
- #define PWM7T2L (*(unsigned char volatile xdata *)0xff53)
- #define PWM7CR (*(unsigned char volatile xdata *)0xff54)
- /////////////////////////////////////////////////
- #endif
復制代碼
|