[KF8F] KF8F210运放校准代码示例

[复制链接]
100|0
 楼主 | 2018-9-25 21:54 | 显示全部楼层 |阅读模式
  1. /****************************************************************************************
  2. *
  3. * 文件名: main.c
  4. * 项目名: s1006
  5. * 版 本: v1.0
  6. * 日 期: 2016年05月24日 11时30分18秒
  7. * 作 者: Administrator
  8. *
  9. ****************************************************************************************/
  10. #include<KF8F210.h>

  11. #define uchar unsigned char
  12. #define uint  unsigned int
  13. void Delay_200us()
  14. {
  15.         uchar i = 240;
  16.         while(--i);
  17. }
  18. //;***************************************************************
  19. //; 函  数 名:void Delay50Us()
  20. //;功能函数:延时函数,50us
  21. //;入口参数:无
  22. //;返回参数:无
  23. //;***************************************************************
  24. void Delay50Us()
  25. {
  26.         char cnt ;
  27.         cnt = 30;
  28.         while(cnt--);
  29. }
  30. /*****************************************************
  31. * 函数名称:initFun()
  32. * 函数功能:运放校正使能
  33. * 输入:        无
  34. * 输出:        无
  35. *
  36. *
  37. ***************************************************** */
  38. void        OP_fun()
  39. {
  40.         unsigned char first_back_up,i,val_AMPCALI;
  41.         AMP2ON =1;
  42.         Delay50Us();
  43.         Delay50Us();
  44.         CALIEN =1;
  45.         Delay50Us();
  46.         Delay50Us();
  47.         first_back_up = AMPCTL & 0x80;
  48.         val_AMPCALI = first_back_up;        //保存第一次的值,用于以后判断的标准

  49.         for(i=0;i<64;i++)
  50.         {
  51.                 AMPCALI=val_AMPCALI;
  52.                 Delay50Us();
  53.                 Delay50Us();
  54.                 Delay50Us();
  55.                 if(first_back_up !=(AMPCTL & 0x80))
  56.                 {
  57.                         CALIEN = 0;                                                                //关闭自校准使能,运放2可以进行采样,运放2已经使能,不需要重新打开
  58.                     return;
  59.                 }
  60.                 val_AMPCALI++;
  61.         }
  62.         CALIEN = 0;

  63. }
  64. void  initallFun()
  65. {
  66.         OSCCTL =0X70;
  67.         TR0 = 0b00001011;
  68.         TR1 = 0b10000100;
  69.         TR2 = 0b11110000;

  70.         P0 = 0B00100000;
  71.         P1 = 0B00000000;
  72.         P2 = 0B00000000;

  73.         ANSEL = 0b01100000;
  74.         ANSEH = 0b00001111;
  75. }
  76. void DelayMs (uint Num)
  77. {
  78.         uint        cnt;
  79.         while(Num--)
  80.         {
  81.                 cnt=2000;
  82.                 while(cnt--);
  83.         }
  84. }

  85. //主函数
  86. void main()
  87. {
  88.         initallFun();
  89.         DelayMs(50);
  90.         OP_fun();
  91.         while(1);
  92. }
  93. //中断函数
  94. void int_fun() __interrupt
  95. {

  96. }
复制代码


扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

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