以下程序中0x80和 0x40代表啥
发布网友
发布时间:2022-05-06 00:01
我来回答
共2个回答
热心网友
时间:2022-06-29 13:46
"|"在c语言中是逻辑"或"的意思,即两个进行或运算的元素中,只要其中一个的值为真,结果就为真。
0x40和0x80的二进制表示分别为:1000000和10000000
执行"|"运算:
1000000
10000000
——————
11000000
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
热心网友
时间:2022-06-29 13:46
在<<不完全手册>>2.7.3节,有这么一段话:
void USART1_IRQHandler(void)函数是一个串口1中断响应函数,当串口1发生了相应的中断后,就会跳到该函数执行。这里我们设计了一个小小的接收协议:通过这个函数,配合一个数组USART_RX_BUF[64],一个接收状态寄存器USART_RX_STA实现对串口数据的接收管理。USART_RX_BUF的最大值为64,也就是一次接收的数据最大不能超过64个字节。USART_RX_STA是一个接收状态寄存器其各的定义如下表:
USART_RX_STA
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
接收完成标志
接收 到0X0D标志
接收到的有效数据个数
表2.7.2.2 接收状态寄存器位定义表
设计思路如下:
当接收到从电脑发过来的数据,把接收到的数据保存在USART_RX_BUF中,同时在接收状态寄存器(USART_RX_STA)中计数接收到的有效数据个数,当收到回车(0X0D,0X0A)的第一个字节0X0D时,计数器将不再增加,等待0X0A的到来,而如果0X0A没有来到,则认为这次接收失败,重新开始下一次接收。如果顺利接收到0X0A,则标记USART_RX_STA的第七位,这样完成一次接收,并等待该位被其他程序清除,从而开始下一次的接收,而如果迟迟没有收到0X0D,那么在接收数据超过64个了,则会丢弃前面的数据,重新接收。
看了,这段话,我估计你明白了吧?