- /*************************************************************************************************
- * * 工 程 名:4路数字电源用 外部触发发生器
- * * 创 建 人:
- * * 创建时间:
- * * 编 译 器:
- * * 描 述:
-
- ---------------------------------------------------------------------------------------------------
- **----------------------------------------当前版本修订---------------------------------------------
- * * 修改人:
- * * 日 期:
- * * 描 述:
- * *
- * * ----------------------------------------------------------------------------------------------
- * * 修改人:
- * * 日 期:
- * * 描 述:
- * *
- * * ----------------------------------------------------------------------------------------------
- **************************************************************************************************/
- #include <STC15F104E.H>
- #include <intrins.h>
- #include <string.h>
- #undef BIT
- #define BIT(x) (1<<(x))
- #define IOSET(port,x) (port)|=(x)
- #define IOCLR(port,x) (port)&=~(x)
- #define IOXOR(port,x) (port)^=(x)
- #define GETBIT(port,x) ((port&BIT(x))>>x)
- #define CLI() EA=0 //关全局中断
- #define SEI() EA=1 //开全局中断
- #define TH0RLD 0xFA
- #define TL0RLD 0x00
- /**************************************************************************************************
- * * 函数名称:void timer0(void) interrupt 1
- * * 函数功能:Timer0 中断服务函数
- * * 输入参数:
- * * 返回参数:
- * * 备 注:
- **************************************************************************************************/
- unsigned int n20HzCnt = 0;
- unsigned int n10HzCnt = 0;
- void timer0(void) interrupt 1
- {
- CLI();
- TL0=TL0RLD;//重装定时器
- TH0=TH0RLD;
- if( 295 == n20HzCnt ++)
- {
- n20HzCnt = 0;
- IOXOR(P3,BIT(5));
- }
- if( 560 == n10HzCnt ++)
- {
- n10HzCnt = 0;
- IOXOR(P3,BIT(2));
- }
- //IOCLR(P1,BIT(6));
- //IOSET(P1,BIT(6));
- SEI();
- }
- /**************************************************************************************************
- * * 函数名称:void Timer0_Initialize(void)
- * * 函数功能:Timer0 初始化
- * * 输入参数:
- * * 返回参数:
- * * 备 注:内部时钟FOSC = 18.432 ,定时1ms 初值 0xFA00
- **************************************************************************************************/
- void Timer0_Initialize(void)
- {
- #if 0
- U32 v;
- TMOD&=0xf0;
- TMOD|=0X01; //T0方式1
- v=FOSC/12/5000;
- v=v-6;
- if(v>65535)v=65535;
- v=65535-v;
- TH0RLD=v>>8;
- TL0RLD=v;
- TH0 =TH0RLD;
- TL0 =TL0RLD;
- TR0 =1; //启动T0
- ET0 =1 //允许T0中断
- #endif
- TMOD |= 0x1; // 定时器T0,模式1
- TH0 = TH0RLD; // 定时时长为1ms,即T0=0xFACB
- TL0 = TL0RLD;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- /**************************************************************************************************
- * * 函数名称:void InitPortAndVar(void)
- * * 函数功能:IO端口配置和全局变量初始化
- * * 输入参数:
- * * 返回参数:
- * * 备 注:P3.2 P3.5 强推挽输出
- **************************************************************************************************/
- void InitPortAndVar(void)
- {
- P3M1 = 0x00; //
- P3M0 = 0x14; // 1111 1111
- }
- /**************************************************************************************************
- * * 函数名称:void Initialize_Devices(void)
- * * 函数功能:设备初始化
- * * 输入参数:
- * * 返回参数:
- * * 备 注:P3.5 强推挽输出
- **************************************************************************************************/
- void Initialize_Devices(void)
- {
- InitPortAndVar();
- //Uart1_init(2400,0);//28800/12=2400,关中断
- IOSET(AUXR,BIT(7)); // T0x12,让T0的时钟变为原来的12倍。 1,一个时钟周期 0 12个时钟周期
- Timer0_Initialize();
- EA=1;
- }
- /**************************************************************************************************
- * * 函数名称:main 函数
- * * 函数功能:
- **************************************************************************************************/
- void main(void)
- {
- unsigned char k;
- Initialize_Devices();
- while(1)
- {
- k = k;
- }
- }
复制代码
全部资料51hei下载地址:
STC15W104 204w资料.rar
(2.51 MB, 下载次数: 65)
|