怎样将模拟多通道开关的51程序改写成STM32的表达方式

2019-03-23 19:19发布

请多多指点,谢谢。
两个问题:
  函数中,可以看出ABC的值是不停变换(程序里没考虑ABC一直加,溢出怎么办????)
sel_B,代指P1.2. 然后由ABC与0x02运算,得出状态值。 stm32中该如何表达??????

下面是个程序:
#include <reg51.h>
#include <intrins.h>
sbit     sel_A = P1^1;  多通道开关 A,B,C三个选择端对应80C51的三个端口,从而控制通道开关
sbit     sel_B = P1^2;
sbit     sel_C = P1^3;
unsigned char ABC;
void timer_set();                     //定时器初始化函数
     
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};                     

void IntTimer0() interrupt 1
{
  off_system_interrupt();
  ABC++;//  可以看出ABC的值是不停变换,程序里没考虑ABC一直加,溢出怎么办????
  sel_A=ABC&0x01;  //
  sel_B=ABC&0x02; // sel_B指P1.2. 然后由ABC与0x02运算,得出状态值。 stm32中如何表达??????
  sel_C=ABC&0x03; //
  delayNOP();               //定时消除抖动
  collection_data();
  on_system_interrupt();
}


//  函数名称: timer_set
//  功能说明: 设置定时器工作状态,与硬件有关
void timer_set()
     {
      TMOD=0x22;  //定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装)
      PCON=0x00;
      TH0=(256-100);  
      TL0=TH0;
      ET0=1;
      } 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。