51单片机四路开关电路+限位开关

#include <reg51.h>
#include <intrins.h>
unsigned char tmp;
void send_char(unsigned char txd);
void delay(unsigned int k);
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key21 = P2^1;    // 限位开关1 zgf
sbit key22 = P2^2;    // 限位开关2 zgf

四路继电器分别在P10,P11,P12,P13口

限位开关接P21,P22口,另一头接GND

初始化

void uart_init(){
    TMOD = 0x20;   // 定时器1工作于8位自动重载模式, 用于产生波特率
    TH1 = 0xFD;    // 波特率9600
    TL1 = 0xFD;

    SCON = 0x50;   // 设定串行口工作方式
    PCON &= 0xef;   // 波特率不倍增

    TR1 = 1;    // 启动定时器1 IE = 0x0;// 禁止任何中断
    ES = 1;     //打开接收中断
    EA = 1;     //打开总中断  
}

原先IE=0x0仅四路开关,禁止中断

主程序

main(){
     uart_init();
    P1 = 0xFF;  //P1口8个口线全为1也就是高电平,P10 P11 P12 P13 P14 P15 P16 P17    
    while(1){     
          if(key21 == 0){ //zgf 
            delay(20); //延时20ms 消除抖动
            if(key21 == 0){ //第二次判断
              key3 = 1;
              tmp = 3; 
            }else {
              key3 = 0; 
            } //while(!key21); //当按键未松开时,key21为0,执行该死循环。
          }
          if(key22 == 0){ //zgf 
            delay(2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值