单片机中的多路模拟开关例程

 

#include <reg52.h>

#include <absacc.h>

#include <stdio.h>

#include <math.h>

#define uchar unsigned char

#define uint unsigned int

#define adch0 XBYTE[0x0000]

 

sbit P1_3=P1^3;

sbit P1_2=P1^2;

uint ch0datal,ch0datah,i,light;

 

void main(void)

{

   EA=1; PT0=1;                   //开外中断,并设置定时器;

   ET0=1;

   IT0=1;IT1=1;

   EX0=1;EX1=1;ET2=1;

   T2CON=0x08;

   TMOD=0x21;

   

   TH0=0xB9;                  //设置定时器的初值;

   TL0=0xB0;

   TR0=1;

   TI=1;

   

   ch0datah=0;

   ch0datal=0;

   P1_3=0;                    //设置控制端口的初值;

   P1_2=0;

   

   while(1){}                     //等待外部的控制信号;

}

 

void intsvr1(void) interrupt 1             //定时器1模拟外部控制信号的进入

{

   TH0=0xB9;

   TL0=0xB0;

   TR0=1;

   light=light+1;

   if (light>1000)

{

      P1_3=!P1_3;            // MAX333的控制信号取反,工作方式变化;

      P1_2=!P1_2;

      light=0;                   //标志位显示当前的工作状态;

}

} 


版权声明:本文为zhangxinchunleo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。