📄 main.lst
字号:
106 1 SetBitMask(REG_CAN_MOD,STM_BIT); //选择自检测模式
107 1 WriteSJARegBlock(16,&CAN_Baudrate_Filter_Buffer[1],8); //设置验收代码/屏蔽寄存器
108 1 WriteSJAReg(REG_CAN_OCR,0x1a); //设置输出管脚
109 1 SJASetBaudrateStandard(CAN_Baudrate_Filter_Buffer[0]); //设置总线定时器,确定波特率
110 1 SJAQuitResetMode(); //退出复位模式
111 1 }
112
113 /*--------------------------------------------------------------------------------------------------------
114 ** 函数原型: unsigned char Send_Sja1000_Self(void)
115 ** 功能描述: 把键盘数据传送到SJA1000的接收缓冲区,并进行自发自收的测试
116 ** 参数说明: 无
117 ** 返回值: 0 失败
C51 COMPILER V7.07 MAIN 02/09/2004 16:12:39 PAGE 3
118 ** 1 成功
119 /*------------------------------------------------------------------------------------------------------*/
120 unsigned char Send_Sja1000_Self(void)
121 {
122 1 uchar i;
123 1 SJA1000_Config_Self();
124 1 WriteSJAReg(REG_CAN_IER,0x03); //使能接收发送中断标志位
125 1 Delay_ms(100);
126 1 for(i=0;i<2;i++)
127 1 {
128 2 if((ReadSJAReg(REG_CAN_SR)&0x0c)==0x0c) //判断是否可以发送
129 2 {
130 3 WriteSJARegBlock(16,Send_CAN_Info_ID,5); //扩展帧,向发送缓冲区写入5个数据
131 3 WriteSJARegBlock(21,Send_Data_For_Self,8); //扩展帧,向发送缓冲区写入8个数据
132 3 SetBitMask(REG_CAN_CMR,SRR_BIT); //使能自发送请求标志位
133 3 return(1); //返回发送成功标志
134 3 }
135 2 else
136 2 {
137 3 Delay_ms(200); //延时200ms
138 3 }
139 2 return(0); //返回发送失败标志
140 2 }
141 1 }
142
143 /*--------------------------------------------------------------------------------------------------------
144 ** 函数原型: void main(void)
145 ** 功能描述: 主函数
146 ** 参数说明: 无
147 ** 返回值: 无
148 /*------------------------------------------------------------------------------------------------------*/
149 void main()
150 {
151 1 RESET_PIN=0; //将SJA1000的复位线与P1.0相连接
152 1 Delay_ms(1);
153 1 RESET_PIN=1; //控制P1.0来实现SJA1000的复位
154 1 SJA_CS_Point=&CAN_SJA_BaseAdr; //确定SJA1000的基址
155 1 ScanNum[0]=0; //不显示
156 1 Display_Buffer[0]=0x1f;
157 1 ZLG7290_SendDisBuf(Display_Buffer,0);
158 1 ISendStr(ZLG7290,0x0d,ScanNum,1);
159 1 Delay_ms(100);
160 1 if(Send_Sja1000_Self())
161 1 {
162 2 Delay_ms(200);
163 2 if((ReadSJAReg(REG_CAN_IR)==0x03))
164 2 {
165 3 WriteSJAReg(REG_CAN_CMR,4); //释放接收缓冲区
166 3 ScanNum[0]=3; //扫描4位
167 3 Display_Buffer[0]=0x0d; //显示Good
168 3 Display_Buffer[1]=0x15;
169 3 Display_Buffer[2]=0x15;
170 3 Display_Buffer[3]=0x10;
171 3 ISendStr(ZLG7290,0x0d,ScanNum,1);
172 3 ZLG7290_SendDisBuf(Display_Buffer,4);
173 3 }
174 2 else
175 2 {
176 3 ScanNum[0]=4; //扫描5位
177 3 Display_Buffer[0]=0x18; //显示Error
178 3 Display_Buffer[1]=0x15;
179 3 Display_Buffer[2]=0x18;
C51 COMPILER V7.07 MAIN 02/09/2004 16:12:39 PAGE 4
180 3 Display_Buffer[3]=0x18;
181 3 Display_Buffer[4]=0x0e;
182 3 ISendStr(ZLG7290,0x0d,ScanNum,1);
183 3 ZLG7290_SendDisBuf(Display_Buffer,5);
184 3 }
185 2 }
186 1 else
187 1 {
188 2 ScanNum[0]=4; //扫描5位
189 2 Display_Buffer[0]=0x18; //显示Error
190 2 Display_Buffer[1]=0x15;
191 2 Display_Buffer[2]=0x18;
192 2 Display_Buffer[3]=0x18;
193 2 Display_Buffer[4]=0x0e;
194 2 ISendStr(ZLG7290,0x0d,ScanNum,1);
195 2 ZLG7290_SendDisBuf(Display_Buffer,5);
196 2 }
197 1 while(1)
198 1 {
199 2 ;
200 2 }
201 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 444 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 30 7
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 + -