//-------- sbit PPCA = IP^7; //PCA 模块中断优先级 sbit PLVD = IP^6; //低压监测中断优先级 sbit PADC = IP^5; //ADC 中断优先级
sbit PS = IP^4; //串行中断0优先级设定位 sbit PT1 = IP^3; //定时中断1优先级设定位 sbit PX1 = IP^2; //外部中断1优先级设定位 sbit PT0 = IP^1; //定时中断0优先级设定位 sbit PX0 = IP^0; //外部中断0优先级设定位
// 7 6 5 4 3 2 1 0 Reset Value
//sfr IPH = 0xB7; //中断优先级高位 PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000
//sfr IP2 = 0xB5; // - - - - - - PSPI PS2 xxxx,xx00
//sfr IPH2 = 0xB6; // - - - - - - PSPIH PS2H xxxx,xx00 #define PPCAH 0x80 #define PLVDH 0x40 #define PADCH 0x20 #define PSH 0x10 #define PT1H 0x08 #define PX1H 0x04 #define PT0H 0x02 #define PX0H 0x01
#define PCA_InterruptFirst() PPCA = 1 #define LVD_InterruptFirst() PLVD = 1 #define ADC_InterruptFirst() PADC = 1 #define UART1_InterruptFirst() PS = 1 #define Timer1_InterruptFirst() PT1 = 1 #define INT1_InterruptFirst() PX1 = 1 #define Timer0_InterruptFirst() PT0 = 1 #define INT0_InterruptFirst() PX0 = 1
/*************************************************************************************************/
/*************************************************************************************************/
#define S1_DoubleRate() PCON |= 0x80 #define S1_SHIFT() SCON &= 0x3f #define S1_8bit() SCON = (SCON & 0x3f) | 0x40 #define S1_9bit() SCON = (SCON & 0x3f) | 0xc0 #define S1_RX_Enable() SCON |= 0x10 #define S1_USE_P30P31() P_SW1 &= ~0xc0 //UART1 使用P30 P31口 默认 #define S1_USE_P36P37() P_SW1 = (P_SW1 & ~0xc0) | 0x40 //UART1 使用P36 P37口 #define S1_USE_P16P17() P_SW1 = (P_SW1 & ~0xc0) | 0x80 //UART1 使用P16 P17口 #define S1_TXD_RXD_SHORT() PCON2 |= (1<<4) //将TXD与RXD连接中继输出 #define S1_TXD_RXD_OPEN() PCON2 &= ~(1<<4) //将TXD与RXD连接中继断开 默认
#define S1_BRT_UseTimer2() AUXR |= 1 #define S1_BRT_UseTimer1() AUXR &= ~1 // 7 6 5 4 3 2 1 0 Reset Value
//sfr S2CON = 0x9A; S2SM0 - S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI 00000000B //S2 Control
#define S2_8bit() S2CON &= ~(1<<7) //串口2模式0,8位UART,波特率 = 定时器2的溢出率 / 4 #define S2_9bit() S2CON |= (1<<7) //串口2模式1,9位UART,波特率 = 定时器2的溢出率 / 4 #define S2_RX_Enable() S2CON |= (1<<4) //允许串2接收
#define S2_MODE0() S2CON &= ~(1<<7) //串口2模式0,8位UART,波特率 = 定时器2的溢出率 / 4 #define S2_MODE1() S2CON |= (1<<7) //串口2模式1,9位UART,波特率 = 定时器2的溢出率 / 4 #define S2_RX_EN() S2CON |= (1<<4) //允许串2接收 #define S2_RX_Disable() S2CON &= ~(1<<4) //禁止串2接收 #define TI2 (S2CON & 2) != 0 #define RI2 (S2CON & 1) != 0 #define SET_TI2() S2CON |= 2 #define CLR_TI2() S2CON &= ~2 #define CLR_RI2() S2CON &= ~1 #define S2TB8_SET() S2CON |= 8 #define S2TB8_CLR() S2CON &= ~8 #define S2_Int_en() IE2 |= 1 //串口2允许中断
#define S2_USE_P10P11() P_SW2 &= ~1 //UART2 使用P1口 默认 #define S2_USE_P46P47() P_SW2 |= 1 //UART2 使用P4口
#define S3_USE_P00P01() P_SW2 &= ~2 //UART3 使用P0口 默认 #define S3_USE_P50P51() P_SW2 |= 2 //UART3 使用P5口 #define S4_USE_P02P03() P_SW2 &= ~4 //UART4 使用P0口 默认 #define S4_USE_P52P53() P_SW2 |= 4 //UART4 使用P5口
/**********************************************************/
#define Timer0_16bitAutoReload() TMOD &= ~0x03 //16位自动重装 #define Timer0_16bit() TMOD = (TMOD & ~0x03) | 0x01 //16位 #define Timer0_8bitAutoReload() TMOD = (TMOD & ~0x03) | 0x02 //8位自动重装 #define Timer0_16bitAutoRL_NoMask() TMOD |= 0x03 //16位自动重装不可屏蔽中断 #define Timer0_AsCounterP32() TMOD |= 4 //时器0用做计数器 #define Timer0_AsTimer() TMOD &= ~4 //时器0用做定时器 #define Timer0_ExtControlP34() TMOD |= 4 //时器0由外部INT0高电平允许定时计数
#define Timer0_Run() TR0 = 1 //允许定时器0计数 #define Timer0_Stop() TR0 = 0 //禁止定时器0计数 #define Timer0_InterruptEnable() ET0 = 1 //允许Timer1中断. #define Timer0_InterruptDisable() ET0 = 0 //禁止Timer1中断.
#define Timer1_16bitAutoReload() TMOD &= ~0x30 //16位自动重装 #define Timer1_16bit() TMOD = (TMOD & ~0x30) | 0x10 //16位 #define Timer1_8bitAutoReload() TMOD = (TMOD & ~0x30) | 0x20 //8位自动重装 #define Timer1_16bitAutoRL_NoMask() TMOD |= 0x30 //16位自动重装不可屏蔽中断 #define Timer1_AsCounterP33() TMOD |= (1<<6) //时器1用做计数器 #define Timer1_AsTimer() TMOD &= ~(1<<6) //时器1用做定时器 #define Timer1_ExtControlP35() TMOD |= (1<<7) //时器1由外部INT1高电平允许定时计数
#define Timer1_Run() TR1 = 1 //允许定时器1计数 #define Timer1_Stop() TR1 = 0 //禁止定时器1计数 #define Timer1_InterruptEnable() ET1 = 1 //允许Timer1中断. #define Timer1_InterruptDisable() ET1 = 0 //禁止Timer1中断.
// 7 6 5 4 3 2 1 0 Reset Value
//sfr AUXR = 0x8E; T0x12 T1x12 UART_M0x6 T2R T2_C/T T2x12 EXTRAM S1ST2 0000,0000 //Auxiliary Register
#define Timer0_1T() AUXR |= (1<<7) //Timer0 clodk = fo #define Timer0_12T() AUXR &= ~(1<<7) //Timer0 clodk = fo/12 12分频, default
#define Timer1_1T() AUXR |= (1<<6) //Timer1 clodk = fo #define Timer1_12T() AUXR &= ~(1<<6) //Timer1 clodk = fo/12 12分频, default #define S1_M0x6() AUXR |= (1<<5) //UART Mode0 Speed is 6x Standard #define S1_M0x1() AUXR &= ~(1<<5) //default, UART Mode0 Speed is Standard #define Timer2_Run() AUXR |= (1<<4) //允许定时器2计数 #define Timer2_Stop() AUXR &= ~(1<<4) //禁止定时器2计数 #define Timer2_AsCounterP31() AUXR |= (1<<3) //时器2用做计数器 #define Timer2_AsTimer() AUXR &= ~(1<<3) //时器2用做定时器 #define Timer2_1T() AUXR |= (1<<2) //Timer0 clodk = fo #define Timer2_12T() AUXR &= ~(1<<2) //Timer0 clodk = fo/12 12分频, default
#define Timer2_InterruptEnable() IE2 |= (1<<2) //允许Timer2中断. #define Timer2_InterruptDisable() IE2 &= ~(1<<2) //禁止Timer2中断.
#define ExternalRAM_enable() AUXR |= 2 //允许外部XRAM,禁止使用内部1024RAM
#define InternalRAM_enable() AUXR &= ~2 //禁止外部XRAM,允许使用内部1024RAM
#define T0_pulseP34_enable() AUXR2 |= 1 //允许 T0 溢出脉冲在T0(P3.5)脚输出,Fck0 = 1/2 T0 溢出率,T0可以1T或12T。 #define T0_pulseP34_disable() AUXR2 &= ~1 #define T1_pulseP35_enable() AUXR2 |= 2 //允许 T1 溢出脉冲在T1(P3.4)脚输出,Fck1 = 1/2 T1 溢出率,T1可以1T或12T。 #define T1_pulseP35_disable() AUXR2 &= ~2 #define T2_pulseP30_enable() AUXR2 |= 4 //允许 T2 溢出脉冲在T1(P3.0)脚输出,Fck2 = 1/2 T2 溢出率,T2可以1T或12T。 #define T2_pulseP30_disable() AUXR2 &= ~4
#define T0_pulseP35(n) ET0=0,Timer0_AsTimer(),Timer0_1T(),Timer0_16bitAutoReload(),TH0=(65536-(n/2+MAIN_Fosc/2)/(n))/256,TL0=(65536-(n/2+MAIN_Fosc/2)/(n))%6,AUXR2 |= bit0,TR0=1 //fx=fosc/(2*M)/n, M=1 or M=12
#define T1_pulseP34(n) ET1=0,Timer1_AsTimer(),Timer1_1T(),Timer1_16bitAutoReload(),TH1=(65536-(n/2+MAIN_Fosc/2)/(n))/256,TL1=(65536-(n/2+MAIN_Fosc/2)/(n))%6,AUXR2 |= bit1,TR1=1 //fx=fosc/(2*M)/n, M=1 or M=12 #define T2_pulseP30(n) Timer2_InterruptDisable(),Timer2_AsTimer(),Timer2_1T(),TH2=(65536-(n/2+MAIN_Fosc/2)/(n))/256,TL2=(65536-(n/2+MAIN_Fosc/2)/(n))%6,AUXR2 |= bit2,Timer2_Run() //fx=fosc/(2*M)/n, M=1 or M=12
#define Timer0_Load(n) TH0 = (n) / 256, TL0 = (n) % 256 #define Timer1_Load(n) TH1 = (n) / 256, TL1 = (n) % 256 #define Timer2_Load(n) TH2 = (n) / 256, TL2 = (n) % 256
#define Timer0_Load_us(n) TH0=(65536-MainFosc_KHZ*(n)/1000)/256,TL0=(65536-MainFosc_KHZ*(n)/1000)%6 #define Timer1_Load_us(n) TH1=(65536-MainFosc_KHZ*(n)/1000)/256,TL1=(65536-MainFosc_KHZ*(n)/1000)%6 #define Timer2_Load_us(n) TH2=(65536-MainFosc_KHZ*(n)/1000)/256,TL2=(65536-MainFosc_KHZ*(n)/1000)%6
//sfr WDT_CONTR = 0xC1; //Watch-Dog-Timer Control register
// 7 6 5 4 3 2 1 0 Reset Value
// WDT_FLAG - EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000 #define D_WDT_FLAG (1<<7) #define D_EN_WDT (1<<5) #define D_CLR_WDT (1<<4) //auto clear #define D_IDLE_WDT (1<<3) //WDT counter when Idle #define D_WDT_SCALE_2 0 #define D_WDT_SCALE_4 1 #define D_WDT_SCALE_8 2 //T=393216*N/fo #define D_WDT_SCALE_16 3 #define D_WDT_SCALE_32 4 #define D_WDT_SCALE_64 5 #define D_WDT_SCALE_128 6 #define D_WDT_SCALE_256 7
#define WDT_reset(n) WDT_CONTR = D_EN_WDT + D_CLR_WDT + D_IDLE_WDT + (n) //初始化WDT,喂狗 // 7 6 5 4 3 2 1 0 Reset
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库DHT22 AS2302 STC15F261S2 24Mhz 通过串口1 现示(4)在线全文阅读。
相关推荐: