找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3937|回复: 0
收起左侧

STC15W104+204w单片机例程资料 产生10Hz脉冲等程序

[复制链接]
ID:848824 发表于 2020-12-25 09:29 | 显示全部楼层 |阅读模式
51hei.png
  1. /*************************************************************************************************
  2. *  * 工 程 名:4路数字电源用 外部触发发生器
  3. *  * 创 建 人:
  4. *  * 创建时间:
  5. *  * 编 译 器:
  6. *  * 描    述:
  7.                                           
  8. ---------------------------------------------------------------------------------------------------

  9. **----------------------------------------当前版本修订---------------------------------------------
  10. *  * 修改人:
  11. *  * 日 期:
  12. *  * 描 述:
  13. *  *
  14. *  * ----------------------------------------------------------------------------------------------
  15. *  * 修改人:
  16. *  * 日 期:
  17. *  * 描 述:
  18. *  *
  19. *  * ----------------------------------------------------------------------------------------------         

  20. **************************************************************************************************/
  21. #include <STC15F104E.H>
  22. #include <intrins.h>
  23. #include <string.h>

  24. #undef          BIT
  25. #define         BIT(x)    (1<<(x))
  26. #define         IOSET(port,x)                  (port)|=(x)
  27. #define         IOCLR(port,x)                  (port)&=~(x)
  28. #define         IOXOR(port,x)                  (port)^=(x)
  29. #define         GETBIT(port,x)          ((port&BIT(x))>>x)
  30. #define         CLI()                                EA=0                //关全局中断
  31. #define         SEI()                                EA=1                //开全局中断


  32. #define                TH0RLD                                0xFA
  33. #define                TL0RLD                                0x00

  34. /**************************************************************************************************
  35. *  * 函数名称:void timer0(void)        interrupt 1
  36. *  * 函数功能:Timer0 中断服务函数
  37. *  * 输入参数:
  38. *  * 返回参数:
  39. *  * 备    注:               
  40. **************************************************************************************************/
  41. unsigned int n20HzCnt = 0;
  42. unsigned int n10HzCnt = 0;
  43. void timer0(void)        interrupt 1
  44. {
  45.         CLI();
  46.         TL0=TL0RLD;//重装定时器
  47.         TH0=TH0RLD;       

  48.         if( 295 == n20HzCnt ++)
  49.         {
  50.                 n20HzCnt = 0;
  51.                 IOXOR(P3,BIT(5));
  52.         }
  53.         if( 560 == n10HzCnt ++)
  54.         {
  55.                 n10HzCnt = 0;
  56.                 IOXOR(P3,BIT(2));
  57.         }
  58.         //IOCLR(P1,BIT(6));
  59.         //IOSET(P1,BIT(6));
  60.         SEI();
  61. }

  62. /**************************************************************************************************
  63. *  * 函数名称:void Timer0_Initialize(void)
  64. *  * 函数功能:Timer0 初始化
  65. *  * 输入参数:
  66. *  * 返回参数:
  67. *  * 备    注:内部时钟FOSC = 18.432 ,定时1ms           初值 0xFA00
  68. **************************************************************************************************/
  69. void Timer0_Initialize(void)
  70. {
  71.         #if 0
  72.         U32 v;
  73.         TMOD&=0xf0;
  74.         TMOD|=0X01;        //T0方式1
  75.         v=FOSC/12/5000;
  76.         v=v-6;
  77.         if(v>65535)v=65535;
  78.         v=65535-v;
  79.         TH0RLD=v>>8;
  80.         TL0RLD=v;
  81.         TH0 =TH0RLD;
  82.         TL0 =TL0RLD;       
  83.         TR0 =1;        //启动T0
  84.         ET0 =1        //允许T0中断
  85.         #endif


  86.         TMOD |= 0x1;    // 定时器T0,模式1                       
  87.         TH0        = TH0RLD;        // 定时时长为1ms,即T0=0xFACB
  88.         TL0        = TL0RLD;
  89.         EA         = 1;
  90.         ET0        = 1;                  
  91.         TR0        = 1;

  92. }



  93. /**************************************************************************************************
  94. *  * 函数名称:void InitPortAndVar(void)
  95. *  * 函数功能:IO端口配置和全局变量初始化
  96. *  * 输入参数:
  97. *  * 返回参数:
  98. *  * 备    注:P3.2 P3.5 强推挽输出                       
  99. **************************************************************************************************/
  100. void InitPortAndVar(void)
  101. {

  102.         P3M1 = 0x00;   //
  103.         P3M0 = 0x14;   // 1111 1111          

  104. }

  105. /**************************************************************************************************
  106. *  * 函数名称:void Initialize_Devices(void)
  107. *  * 函数功能:设备初始化
  108. *  * 输入参数:
  109. *  * 返回参数:
  110. *  * 备    注:P3.5 强推挽输出                       
  111. **************************************************************************************************/
  112. void Initialize_Devices(void)
  113. {
  114.         InitPortAndVar();
  115.         //Uart1_init(2400,0);//28800/12=2400,关中断
  116.         IOSET(AUXR,BIT(7));  // T0x12,让T0的时钟变为原来的12倍。        1,一个时钟周期 0 12个时钟周期
  117.         Timer0_Initialize();
  118.         EA=1;
  119. }

  120. /**************************************************************************************************
  121. *  * 函数名称:main 函数
  122. *  * 函数功能:
  123. **************************************************************************************************/
  124. void main(void)
  125. {
  126.         unsigned char k;
  127.         Initialize_Devices();
  128.         while(1)
  129.         {
  130.                 k = k;

  131.         }

  132. }
复制代码

全部资料51hei下载地址:
STC15W104 204w资料.rar (2.51 MB, 下载次数: 65)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表