📄 新建 文本文档.txt
字号:
用UART来接收PC机的RS232串行接口数据。由于UART每次只接收8位数据,所以在接收了两个8位数据之后,才将其存入16位的SRAM内。
R1=0x0480; //将IOB10、IOB7分别设为输出、输入状态
[P_IOB_Attrib]=R1;
R1=0x0400;
[P_IOB_Dir]=R1;
R1=0x006b; //设置波特率= 12.288MHz/107 = 114.84KHz
//(与115.2KHz最接近,所以可以选择115.2KHz) 73 第二章 硬件结构 74
[P_UART_BaudScalarLow]=R1;
R1=0x00;
[P_UART_BaudScalarHigh]=R1;
//***********设置UART_command1和UART_command2单元******************//
R1=0xc0;
[P_UART_Command1]=R1;
[P_UART_Command2]=R1;
//************************主程序*****************************************//
L_begin_loop:
R4=0; // SRAM的接收数据队列的起始地址
L_loop:
R2=0;
R2=R2 LSL 4; //清除移位寄存器
CALL F_UART_RECV;
R1=R1 LSL 4; //左移8位
R1=R1 LSL 4;
R3=R1;
R3=R3 and 0xFF00; //R3 =高8位
R2=0;
R2=R2 LSL 4; //清除移位寄存器
CALL F_UART_RECV;
R1=R1 and 0x00FF; //R1 =低8位
R1=R1 or R3; //R1=从UART接收来的最终数据字
[R4++]=R1; //将接收的数据字存入SRAM的数据队列
CMP R4,0x800; //SRAM中的数据队列接收到2048 个数据字
JNE L_loop;
JMP L_begin_loop;
//************************* UART子程序***************************//
F_UART_RECV:
PUSH R2,R3 to [SP];
L_RxRDY:
R2= 0x0080; //检查RxRDY是否为1
TEST R2, [P_UART_Command2];
JZ L_RxRDY //比较结果为0,数据未接受,循环
R1 = [P_UART_Data]; //再次写入数据
POP R2,R3 from [SP];
RETF; //返回到主程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -