📄 protocol.lst
字号:
C51 COMPILER V8.02 PROTOCOL 04/30/2008 14:08:56 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PROTOCOL
OBJECT MODULE PLACED IN protocol.OBJ
COMPILER INVOKED BY: D:\软件安装路径\C51\BIN\C51.EXE protocol.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG952.H>
2 #include <intrins.H>
3 #include "16C554.h"
4 #include "video_matrix.h"
5 #include "com_proto.h"
6 #include "uart.h"
7 #include "wdt.h"
8
9 extern cmdflag,cmdpos;
10 //*************************************************************************
11 //函数名: protocol
12 //功 能: 串口协议,实现串口扩展和视频矩阵切换
13 //入参数: cmd 为从串口得到的一个字符
14 //出参数: 无
15 //*************************************************************************
16 void protocol(unsigned char cmd)
17 {
18 1 uchar cmdlen,i,a,check_sum=0,command[SIZE];
19 1 uint *temp;
20 1 if(cmdflag == 0)
21 1 {
22 2 cmdpos = 0;
23 2 if(cmd == COM_START_CODE)
24 2 cmdflag = 1;
25 2 }
26 1 else
27 1 {
28 2 command[cmdpos++] = cmd;
29 2 if(cmdpos < SIZE) //表明数组没有溢出
30 2 {
31 3 if(cmdpos == command[0]) //即一串数据传送完毕
32 3 {
33 4 cmdlen = command[0];
34 4 for(i=4;i<cmdlen;i++)
35 4 {
36 5 check_sum += command[i-1];
37 5 }
38 4 temp = (unsigned int*)&command[1];
39 4 if(command[i-1] == check_sum)
40 4 {
41 5 switch(*temp) //为0003则为CMD_SwitchVideo 为0005则为CMD_UartData
42 5 {
43 6 case CMD_SwitchVideo:
44 6 {
45 7 matrix_write(command[3],command[4]); //对matrix进行输入输出配置或
46 7 matrix_write(command[5],command[4]); //命令配置
47 7 cmdflag = 0;
48 7 }
49 6 break;
50 6
51 6 case CMD_UartData:
52 6 {
53 7 uint j;
54 7 SC16C554_Write(command[3]|LCR,0x80); //设置UART1 波特率
55 7 SC16C554_Write(command[3]|DLL,DLL_DATA); //设置DLL 低位
C51 COMPILER V8.02 PROTOCOL 04/30/2008 14:08:56 PAGE 2
56 7 SC16C554_Write(command[3]|DLM,DLM_DATA); //设置DLL 高位
57 7 SC16C554_Write(command[3]|LCR,0x03); //8位数据,1 位停止位,无奇偶校验位
58 7 SC16C554_Write(command[3]|FCR,0x07); //允许并复位FIFO
59 7
60 7 SC16C554_Write(command[3]|IER,0x00); //设置16C554禁止所有中断
61 7 // SC16C554_Write(command[3]|IER,0x02); //允许554发送终止中断Enable the transmitter empty interrupt
62 7 SC16C554_Write(command[3]|MCR,0x08); //打开554串口总开关
63 7 for(j=4;j<=cmdlen-2;j++) //从要选择的串口发送内容:从
64 7 {
65 8 a=SC16C554_Read(command[3]|LSR);
66 8 while(!a&(0x1<<5)); //等待THR空
67 8 SC16C554_Write(command[3]|THR, command[j]); //发送数据
68 8 }
69 7 cmdflag = 0;
70 7 }
71 6 break;
72 6 default:
73 6 {
74 7 cmdflag = 0;
75 7 }
76 6 }
77 5 }
78 4 else //若输入数据有错误
79 4 {
80 5 cmdflag = 0;
81 5 }
82 4 }
83 3 }
84 2 else //数组溢出
85 2 {
86 3 cmdflag = 0;
87 3 }
88 2 }
89 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 295 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 48
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -