首页 > 其他分享 >12-串行接口的进阶应用

12-串行接口的进阶应用

时间:2023-10-09 21:44:23浏览次数:37  
标签:P2 case P0 12 进阶 串行接口 void break command

串行接口的进阶应用

20231009201931

由上可知:

​ 应用高四位来判断控制灯光,所以应用高四位对比,将第四位置0进行对比用switch语句,

进行判断,将为A时,保留低四位,取反将高四位置1

​ 将为B时,保留高四位,取反将低四位置1,向左移动4位

#include <REGX52.H>
sfr AUXR = 0x8E;


unsigned char command = 0x00;
void _74HC138(unsigned char n) {
	
	
	
	switch(n) {
		case 4:
			P2 = (P2 & 0x1f) | 0x80;
			break;
		case 5:
			P2 = (P2 & 0x1f) | 0xa0;
			break;
		case 6:
			P2 = (P2 & 0x1f) | 0xc0;
			break;
		case 7:
			P2 = (P2 & 0x1f) | 0xe0;
			break;
	
	}

} 



void System_Init(void) {
	_74HC138(5);
	P0 = 0x00;
	_74HC138(4);
	P0 = 0xFF;
	

}


void UART_Init(void) {
	
	TMOD = 0X20;
	SCON = 0X50;
	TL1= 0XFD;
	TH1= 0XFD;
	AUXR = 0x00;
	
	TR1 = 1;
	ES = 1;
	EA = 1;
	
	
}

void SendByte(unsigned char dat) {
	SBUF = dat;
	while(TI == 0);
	TI = 0;

}
void sendString(unsigned char *Str) {
	while(*Str !='\0') {
		SendByte(*Str++); 
	}

}

void work() {
	_74HC138(4);
	if(command != 0) {
		
		switch(command & 0xf0) 
			{// 1111 0000
			case 0xA0:
				P0 = 0XFF;  // 
				P0 = (P0 | 0x0F) & (~command | 0xF0);
				command = 0x00;
			break;
			case 0xB0:
				P0 = 0XFF;
				P0 = (P0 | 0XF0) & (~command << 4 | 0x0F);
				command = 0x00;
			break;
			case 0xC0:
				sendString("The System is running...");
				command = 0x00;
			break;
		}
	}
}

void main(void) {
	System_Init();
	UART_Init();

	sendString("Wecome to xxx System...\t\n");
	
	while(1) {
		work();
	}
}

void UART1_Routine(void) interrupt 4{
	if(RI == 1) {
		command = SBUF;
		
		RI = 0;
	}

}



	

标签:P2,case,P0,12,进阶,串行接口,void,break,command
From: https://www.cnblogs.com/bky111/p/17753243.html

相关文章

  • Listener refused the connection with the following error: ORA-12514
    1.问题在使用OracleSQLDeveloper时,遇到以下问题:状态:失败-测试失败:Listenerrefusedtheconnectionwiththefollowingerror:ORA-12514,TNS:listenerdoesnotcurrentlyknowofservicerequestedinconnectdescriptor(CONNECTION_ID=w++gsIkwQB+f4YlRCo9RvQ==)......
  • C# 12 中的新增功能
    C#12中的新增功能 新的C#12功能在预览版中已经引入.您可以使用最新的VisualStudio预览版或最新的.NET8预览版SDK来尝试这些功能。以下是一些新引入的功能:主构造函数集合表达式默认Lambda参数任何类型的别名内联数组拦截器使用nameof访问实例成员......
  • 2023 KiCon Asia 11月12日 深圳见!
      KiCon是什么?KiCon,全称KiCadConference,是由KiCad社区主办,在每年秋季举行,将使用和热爱KiCad的开发者聚集一起,分享想法、经验和学习心得等。在继今年9月在西班牙拉科鲁尼亚第二届KiCon用户大会的成功基础上,非常高兴首届亚洲KiCad大会,“2023KiCadAisa”将在全球电子......
  • 10月12日19:30|BIM+GIS用于公路施工组织策划专题直播
    当前BIM+GIS三维数字沙盘技术成为了交通建设领域的一大热门话题。交通部也在近日发布了《推荐公路数字化转型的意见》,明确指出了BIM+GIS技术应用对于公路数字化转型的重要性。那么,公路工程建设施工组织策划阶段,该如何更好地应用BIM+GIS技术呢?我们很荣幸的邀请到了交通建设领域BIM......
  • LeetCode 125 验证回文串
    LeetCode125验证回文串1.题目地址https://leetcode.cn/problems/valid-palindrome/?envType=study-plan-v2&envId=top-interview-1502.题解这道题比较简单,思路如下:1.对源字符串进行处理,过滤掉非字母数字字符。这里需要注意:我们要将大写字母统一转换成小......
  • 12,zabbix 6.0 编译安装
    1、编译安装Nginxyuminstall-ypcrepcre-devel#下载Nginxwgethttp://nginx.org/download/nginx-1.18.0.tar.gz#解压Nginxtar-zxvfnginx-1.18.0.tar.gz#编译安装Nginxcdnginx-1.18.0mkdir-p/usr/local/nginx/./configure--prefix=/usr/local/nginx/--wi......
  • php自学提升进阶路线
    为了自己对php的系统全面深入的掌握,我通过个人经验,以及搜索网上高手经验,汇总了一份php自我学习路线规划,包括实战演练、学习建议、高手进阶、常见问题和测试总结五块。算是一个系统的学习计划和目标吧。避免盲目学习,对提高有所指引。希望自我加压,通过努力修炼达到高手水平。天道酬......
  • 安全工具合集:125个最佳网络安全工具-SecToolsOrg
    SecToolsOrg是什么SecToolsOrg是一个国外网友创建的安全工具网站,收集了125个最佳网络安全工具,网站为英文语言,网站提供评级、评论、搜索、排序和新工具建议表,该站点允许在任何平台上使用开源和商业工具,每款软件工具都有详细的介绍截图等等,感兴趣的同学可以到网站学习。英文页面......
  • 12.2 实现键盘模拟按键
    本节将向读者介绍如何使用键盘鼠标操控模拟技术,键盘鼠标操控模拟技术是一种非常实用的技术,可以自动化执行一些重复性的任务,提高工作效率,在Windows系统下,通过使用各种键盘鼠标控制函数实现动态捕捉和模拟特定功能的操作。键盘鼠标的模拟是实现自动化的必备流程,通常我们可以使用key......
  • 英特尔:Win12明年出 现有电脑硬件太老需要升级
    在上个月的花旗分析师会议上,英特尔首席财务官DavidZinsner透露了明年Windows更新的消息,暗示消费者可能会因为Windows的新版本而升级他们的个人电脑。其在会议上表示:“我们认为2024年对于PC市场来说将会是相当不错的一年,特别是在Windows系统更新的带动下。”“现有的Windows电脑......