蓝桥杯单片机CT107D

编程入门 行业动态 更新时间:2024-10-27 08:32:55

蓝桥杯<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机CT107D"/>

蓝桥杯单片机CT107D

#include<reg52.h>
sfr AUXR = 0x8e;     //设置辅助寄存器AUXR
unsigned char command;   //用于接收上位机数据 void Select_HC138(unsigned char n)
{switch(n){case 4:P2 = (P2 & 0x1f) | 0x80;break;case 5:P2 = (P2 & 0x1f) | 0xa0;break;}
}void Send_byte(unsigned char dat)    //发送一个字节
{SBUF = dat;while(TI == 0);    //等待发送TI = 0;            //清0
}void Send_string(unsigned char *str)  //发送一个字符串
{while(*str != '\0'){Send_byte(*str++);}
}void LED_bright()
{if(command)		 {switch(command & 0xf0)   //保留command的高4位,低4位清0{case 0xa0:     //控制L1~L4P0 = (P0 & 0xf0) | (~command & 0x0f); //P0 = (P0 | 0x0f) & (~command | 0xf0);  //保留P0的高4四位,取~command的低4位,然后组合break;case 0xb0:	   //控制L5~L8P0 = (P0 | 0xf0) & ((~command << 4) | 0x0f);  //保留P0的低4位,取~command右移4位后的高4位,然后组合break;case 0xc0:	   //输出字符串Send_string("The system is running...\r\n");break;}}command = 0;
}void Init_uart()      //串口初始化
{SCON = 0x50;      //8位异步uart并允许接收AUXR = 0x00;      //将AUXR置0TMOD = 0x20;      //8位自动重装定时器(产生9600b/s波特率)TH1 = 0xfd;TL0 = 0xfd;TR1 = 1;          //打开定时器1EA = 1;           //打开总中断ES = 1;           //打卡串口中断
}void Service_uart() interrupt 4	    //串口中断服务函数
{if(RI == 1)     //接收数据{RI = 0;     //清0command = SBUF;LED_bright();}
}void main()
{Init_uart();Select_HC138(5);P0 = 0x00;     //关闭蜂鸣器和继电器Select_HC138(4);P0 = 0xff;//Send_string("Welcom to x system!\r\n");  //在Windows下的串口助手要显示换行,需在字符串后加\r\n    while(1);
}

更多推荐

蓝桥杯单片机CT107D

本文发布于:2024-03-07 11:16:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717675.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   蓝桥杯   CT107D

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!