写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。
标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。
点击此处进入学习日记的总目录
2023.4.11
- 一、ASCII码
- 二、51:error C141: syntax error near
- 三、51:中断控制串口发送,并亮灯
一、ASCII码
ASCII``(American Standard Code for Information Interchange,美国信息交换标准代码)
是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646
。
ASCII
由电报码发展而来。第一版标准发布于1963
年 ,1967
年经历了一次主要修订,最后一次更新则是在1986
年,至今为止共定义了128
个字符;其中33
个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit
符号),且这33
个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33
个字符之外的是95
个可显示的字符。用键盘敲下空白键所产生的空白字符也算1
个可显示字符(显示为空白
)。
- 控制字符
ASCII
控制字符的编号范围是0-31
和127
(0x00-0x1F
和0x7F
),共33
个字符。
- 可显示字符
可显示字符编号范围是32-126
(0x20-0x7E
),共95
个字符。
二、51:error C141: syntax error near
- 变量定义一定放在函数最前面
- 忘了加
;
- 有多余的符号,如
}
三、51:中断控制串口发送,并亮灯
- 编写
初始化函数
#define FOSC 12000000L // 系统频率为12MHz
#define BAUD 9600 // 波特率为9600
/*
串口初始化,可接收发送,打开全局中断
*/
void UART_Init(void)
{
SCON = 0x50; // 8位数据位,允许接收,模式1
TMOD &= 0x0F; // 定时器1模式设为8位自动重载
TMOD |= 0x20;
TH1 = TL1 = -(FOSC/12/16/BAUD); // 定时器1初始值 (等同用0xFF-(FOSC/12/16/BAUD))
TR1 = 1; // 启动定时器1
PCON |= 0x80; // SMOD = 1,波特率加倍
ES = 1; // 开启串口中断
EA = 1; // 全局中断允许
}
- 编写
中断函数
void UART_Routine() interrupt 4
{
if(RI==1)
{
P2=~SBUF; //串口接收数据控制LED灯 如接收0x14,即0001 0100,亮第三个和第五个灯
UART_SendByte(SBUF); //串口将接收的数据 发送给上位机
RI=0; //RI需要软件置0
}
}