天天看點

單片機中的多路模拟開關例程

#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;                    // 标志位顯示目前的工作狀态;

}

繼續閱讀