[CAN-bus/DeviceNet] 求助!2个节点调试(附代码及故障码)

[复制链接]
3066|8
 楼主| fatRonaldo 发表于 2007-7-5 15:31 | 显示全部楼层 |阅读模式
用了2个节点,1个节点发送0xaa给节点2,2节点收到发送0x55给一节点,过程中用串口跟踪个寄存器状态!<br /><br />节点1上传给串口的数据:00&nbsp;01&nbsp;02&nbsp;01&nbsp;01&nbsp;aa&nbsp;03&nbsp;01&nbsp;a6<br />节点1程序:<br />//======================================================<br />unsigned&nbsp;char&nbsp;xdata&nbsp;*SJA_BasicAddr;<br /><br />unsigned&nbsp;char&nbsp;PC_BUF;<br /><br />sbit&nbsp;LED&nbsp;=&nbsp;P1^6;<br />sbit&nbsp;BEEP&nbsp;=&nbsp;P1^7;<br /><br /><br />#define&nbsp;OK&nbsp;0<br />#define&nbsp;ERROR&nbsp;1<br /><br />//======================================================<br /><br /><br /><br /><br />extern&nbsp;bit&nbsp;SJA_TestCommunication(void);<br />extern&nbsp;bit&nbsp;SJA_EnterRestModel(void);<br />extern&nbsp;bit&nbsp;SJA_QuitResetModel(void);<br />extern&nbsp;void&nbsp;SJA_SetInterrupt(unsigned&nbsp;char&nbsp;interruptMode);<br />extern&nbsp;&nbsp;void&nbsp;SJA_SetBaudRate(unsigned&nbsp;char&nbsp;baudRateNum);<br />extern&nbsp;void&nbsp;SJA_SetObject(unsigned&nbsp;char&nbsp;acr,&nbsp;unsigned&nbsp;char&nbsp;amr);<br />extern&nbsp;void&nbsp;SJA_SetOutandClock(unsigned&nbsp;char&nbsp;outControl,&nbsp;unsigned&nbsp;char&nbsp;clockOut);<br />void&nbsp;MCU_Init(void);<br />void&nbsp;Delay(unsigned&nbsp;int&nbsp;Delay_time);<br />bit&nbsp;SJA_Init(void);<br />void&nbsp;send(unsigned&nbsp;char&nbsp;S_Data);<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />bit&nbsp;SJA_TestCommunication(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TEST;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0xAA;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(*SJA_BasicAddr&nbsp;==&nbsp;0xAA)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ERROR;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br />&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br /><br />bit&nbsp;SJA_EnterRestModel(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_CONTROL;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;temp&nbsp;|RR_CTR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;置位复位请求位<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RR_CTR)&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ERROR;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />&nbsp;bit&nbsp;SJA_QuitResetModel(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_CONTROL;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;temp&nbsp;&&nbsp;(~RR_CTR);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RR_CTR)&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ERROR;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br /><br /><br />//-------------------------------------------------------------------<br />//参数说明:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//返回值:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//说明:&nbsp;该函数用于设定再系统晶体为16MHz时常用的<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标准波特率的值。<br />//-------------------------------------------------------------------<br />unsigned&nbsp;char&nbsp;code&nbsp;SJA_BTR_TABLE[]&nbsp;=&nbsp;{<br />0xbf,&nbsp;0xff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;5Kbps时的波特率<br />0x67,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;10Kbps时的波特率<br />0x53,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;20Kbps时的波特率<br />0x87,&nbsp;0xff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;40Kbps时的波特率<br />0x47,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;50Kbps时的波特率<br />0x83,&nbsp;0xff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;80Kbps时的波特率<br />0x43,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;100Kbps时的波特率<br />0x03,&nbsp;0x1c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;125Kbps时的波特率<br />0x81,&nbsp;0xfa,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;200Kbps时的波特率<br />0x01,&nbsp;0x1c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;250Kbps时的波特率<br />0x80,&nbsp;0xfa,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;400Kbps时的波特率<br />0x00,&nbsp;0x1c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;500Kbps时的波特率<br />0x80,&nbsp;0xb6,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;666Kbps时的波特率<br />0x00,&nbsp;0x16,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;800Kbps时的波特率<br />0x00,&nbsp;0x14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1000Kbps时的波特率<br />};<br /><br />&nbsp;void&nbsp;SJA_SetBaudRate(unsigned&nbsp;char&nbsp;baudRateNum)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;btr0,&nbsp;btr1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;btr0&nbsp;=&nbsp;SJA_BTR_TABLE[2*baudRateNum];<br />&nbsp;&nbsp;&nbsp;&nbsp;btr1&nbsp;=&nbsp;SJA_BTR_TABLE[2*baudRateNum+1];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_BTR0;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;btr0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_BTR1;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;btr1;<br />}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />void&nbsp;SJA_SetObject(unsigned&nbsp;char&nbsp;acr,&nbsp;unsigned&nbsp;char&nbsp;amr)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_ACR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;acr;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_AMR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;amr;<br />&nbsp;}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />void&nbsp;SJA_SetOutandClock(unsigned&nbsp;char&nbsp;outControl,&nbsp;unsigned&nbsp;char&nbsp;clockOut)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_OUTCTR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;outControl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_CDR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;clockOut;<br />&nbsp;}<br /><br /><br /><br />//-------------------------------------------------------------------<br />//<br />//-------------------------------------------------------------------<br />bit&nbsp;SJA_Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(SJA_TestCommunication()&nbsp;==&nbsp;ERROR);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;测试连接<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(SJA_EnterRestModel()&nbsp;==&nbsp;ERROR);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetBaudRate(6);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetObject(0x01,&nbsp;0xfc);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetOutandClock(0xaa,&nbsp;0x48);<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(SJA_QuitResetModel()&nbsp;==&nbsp;ERROR);&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br /><br /><br />//-------------------------------------------------------------------------<br />void&nbsp;MCU_Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC_BUF&nbsp;=&nbsp;0x77;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD&nbsp;=&nbsp;0x20;<br />&nbsp;&nbsp;&nbsp;&nbsp;TH1&nbsp;=&nbsp;0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL1&nbsp;=&nbsp;0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR1&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCON&nbsp;=&nbsp;0xd8;<br />&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ES&nbsp;=&nbsp;1;<br />}<br /><br /><br /><br />void&nbsp;Send(unsigned&nbsp;char&nbsp;S_Data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SBUF&nbsp;=&nbsp;S_Data;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(TI&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;TI&nbsp;=0;<br />}<br /><br /><br /><br />//--------------------------------------------------------------------------<br />void&nbsp;Delay(unsigned&nbsp;int&nbsp;Delay_time)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;t;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=Delay_time;&nbsp;i&gt0;&nbsp;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(t=100;&nbsp;t&gt0;&nbsp;t--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><br /><br /><br />//----------------------------------------------------------------------------------------<br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;MCU_Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(SJA_Init()&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;send(0x01);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//检查发送缓冲区状态<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;TBS_STA)&nbsp;!=&nbsp;TBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x02);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TxBuffer1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TxBuffer2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TxBuffer3;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_COMMAND;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;TR_CMD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x03);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;TCS_STA)&nbsp;!=&nbsp;TCS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x05);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send&nbsp;(0x04);<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RBS_STA)&nbsp;!=&nbsp;RBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x04);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_RxBuffer1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_RxBuffer2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_RxBuffer3;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_COMMAND;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;RRB_CMD;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RBS_STA)&nbsp;!=&nbsp;RBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x05);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />节点2上传给串口数据:00&nbsp;01&nbsp;d1&nbsp;03&nbsp;cf&nbsp;50&nbsp;B8&nbsp;04&nbsp;05&nbsp;<br />节点2程序:<br />//======================================================<br />unsigned&nbsp;char&nbsp;xdata&nbsp;*SJA_BasicAddr;<br /><br />unsigned&nbsp;char&nbsp;PC_BUF;<br /><br />sbit&nbsp;LED&nbsp;=&nbsp;P1^6;<br />sbit&nbsp;BEEP&nbsp;=&nbsp;P1^7;<br /><br /><br />#define&nbsp;OK&nbsp;0<br />#define&nbsp;ERROR&nbsp;1<br /><br />//======================================================<br /><br /><br /><br /><br />extern&nbsp;bit&nbsp;SJA_TestCommunication(void);<br />extern&nbsp;bit&nbsp;SJA_EnterRestModel(void);<br />extern&nbsp;bit&nbsp;SJA_QuitResetModel(void);<br />extern&nbsp;void&nbsp;SJA_SetInterrupt(unsigned&nbsp;char&nbsp;interruptMode);<br />extern&nbsp;&nbsp;void&nbsp;SJA_SetBaudRate(unsigned&nbsp;char&nbsp;baudRateNum);<br />extern&nbsp;void&nbsp;SJA_SetObject(unsigned&nbsp;char&nbsp;acr,&nbsp;unsigned&nbsp;char&nbsp;amr);<br />extern&nbsp;void&nbsp;SJA_SetOutandClock(unsigned&nbsp;char&nbsp;outControl,&nbsp;unsigned&nbsp;char&nbsp;clockOut);<br />void&nbsp;MCU_Init(void);<br />void&nbsp;Delay(unsigned&nbsp;int&nbsp;Delay_time);<br />bit&nbsp;SJA_Init(void);<br />void&nbsp;send(unsigned&nbsp;char&nbsp;S_Data);<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />bit&nbsp;SJA_TestCommunication(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TEST;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0xAA;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(*SJA_BasicAddr&nbsp;==&nbsp;0xAA)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ERROR;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br />&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br /><br />bit&nbsp;SJA_EnterRestModel(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_CONTROL;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;temp&nbsp;|RR_CTR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;置位复位请求位<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RR_CTR)&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ERROR;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />&nbsp;bit&nbsp;SJA_QuitResetModel(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_CONTROL;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;temp&nbsp;&&nbsp;(~RR_CTR);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RR_CTR)&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ERROR;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br /><br /><br />//-------------------------------------------------------------------<br />//参数说明:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//返回值:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//说明:&nbsp;该函数用于设定再系统晶体为16MHz时常用的<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标准波特率的值。<br />//-------------------------------------------------------------------<br />unsigned&nbsp;char&nbsp;code&nbsp;SJA_BTR_TABLE[]&nbsp;=&nbsp;{<br />0xbf,&nbsp;0xff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;5Kbps时的波特率<br />0x67,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;10Kbps时的波特率<br />0x53,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;20Kbps时的波特率<br />0x87,&nbsp;0xff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;40Kbps时的波特率<br />0x47,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;50Kbps时的波特率<br />0x83,&nbsp;0xff,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;80Kbps时的波特率<br />0x43,&nbsp;0x2f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;100Kbps时的波特率<br />0x03,&nbsp;0x1c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;125Kbps时的波特率<br />0x81,&nbsp;0xfa,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;200Kbps时的波特率<br />0x01,&nbsp;0x1c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;250Kbps时的波特率<br />0x80,&nbsp;0xfa,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;400Kbps时的波特率<br />0x00,&nbsp;0x1c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;500Kbps时的波特率<br />0x80,&nbsp;0xb6,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;666Kbps时的波特率<br />0x00,&nbsp;0x16,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;800Kbps时的波特率<br />0x00,&nbsp;0x14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1000Kbps时的波特率<br />};<br /><br />&nbsp;void&nbsp;SJA_SetBaudRate(unsigned&nbsp;char&nbsp;baudRateNum)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;btr0,&nbsp;btr1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;btr0&nbsp;=&nbsp;SJA_BTR_TABLE[2*baudRateNum];<br />&nbsp;&nbsp;&nbsp;&nbsp;btr1&nbsp;=&nbsp;SJA_BTR_TABLE[2*baudRateNum+1];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_BTR0;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;btr0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_BTR1;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;btr1;<br />}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />void&nbsp;SJA_SetObject(unsigned&nbsp;char&nbsp;acr,&nbsp;unsigned&nbsp;char&nbsp;amr)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_ACR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;acr;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_AMR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;amr;<br />&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//-------------------------------------------------------------------<br />void&nbsp;SJA_SetOutandClock(unsigned&nbsp;char&nbsp;outControl,&nbsp;unsigned&nbsp;char&nbsp;clockOut)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_OUTCTR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;outControl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_CDR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;clockOut;<br />&nbsp;}<br /><br /><br /><br />//-------------------------------------------------------------------<br />//<br />//-------------------------------------------------------------------<br />bit&nbsp;SJA_Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(SJA_TestCommunication()&nbsp;==&nbsp;ERROR);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;测试连接<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(SJA_EnterRestModel()&nbsp;==&nbsp;ERROR);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetBaudRate(6);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetObject(0x02,&nbsp;0xfc);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetOutandClock(0xaa,&nbsp;0x48);<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(SJA_QuitResetModel()&nbsp;==&nbsp;ERROR);&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br /><br /><br />//-------------------------------------------------------------------------<br />void&nbsp;MCU_Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC_BUF&nbsp;=&nbsp;0x77;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD&nbsp;=&nbsp;0x20;<br />&nbsp;&nbsp;&nbsp;&nbsp;TH1&nbsp;=&nbsp;0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL1&nbsp;=&nbsp;0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR1&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCON&nbsp;=&nbsp;0xd8;<br />&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ES&nbsp;=&nbsp;1;<br />}<br /><br /><br /><br />void&nbsp;Send(unsigned&nbsp;char&nbsp;S_Data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SBUF&nbsp;=&nbsp;S_Data;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(TI&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;TI&nbsp;=0;<br />}<br /><br /><br /><br /><br />//--------------------------------------------------------------------------<br />void&nbsp;Delay(unsigned&nbsp;int&nbsp;Delay_time)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;t;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=Delay_time;&nbsp;i&gt0;&nbsp;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(t=100;&nbsp;t&gt0;&nbsp;t--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><br />//----------------------------------------------------------------------------------------<br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;MCU_Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(SJA_Init()&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;send(0x01);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RBS_STA)&nbsp;!=&nbsp;RBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x03);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_RxBuffer1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_RxBuffer2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_RxBuffer3;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_COMMAND;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;RRB_CMD;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x04);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RBS_STA)&nbsp;!=&nbsp;RBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x05);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//检查发送缓冲区状态<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;TBS_STA)&nbsp;!=&nbsp;TBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x02);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TxBuffer1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x02;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TxBuffer2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_TxBuffer3;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x55;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_COMMAND;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;TR_CMD;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//等待发送完毕<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;TCS_STA)&nbsp;!=&nbsp;TCS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x03);<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />问题出在那里呢?<br />
 楼主| fatRonaldo 发表于 2007-7-5 15:34 | 显示全部楼层

re

串口1上报的数据A6为状态寄存器的值,总线关闭!!!<br />为什么会这个样子的?
 楼主| fatRonaldo 发表于 2007-7-5 16:01 | 显示全部楼层

re

补充一下:<br />硬件方面除了RST脚是接的51K与10U的阻容组成的低电平复位电路,其他的跟周立功网上的一样!
 楼主| fatRonaldo 发表于 2007-7-5 23:06 | 显示全部楼层

re

没人指点的吗
xhtxzxw 发表于 2007-7-6 13:16 | 显示全部楼层

是不是复位时间太长了?

用的是SJA10吧?是不是复位时间太长了?时间常数很大啊!T=51K*10u=?啊!<br />你的main()里面虽然有&nbsp;Delay(1000),但远远的远远的不够!加电了,SJA1000还迷迷糊糊的没清醒过来呢,你的main()就做初始化了
 楼主| fatRonaldo 发表于 2007-7-6 16:32 | 显示全部楼层

re

初始化的问题搞定了<br /><br />现在出来新的问题:初始化成功后读出的状态寄存器的值是0x0c,我用的是basic模式,接着向TXBUF0,TXBUF1,TXBUF2中分别写入0xaa(ID高8位),0x01(数据帧,数据长度1位),0x66(数据)后,启动发送命令向REG_COMMAND中写入0x01后,延时一段时间,在检测TCS(发送完毕位),一直是未发送完!<br />进一步检测,当写完REG_COMMAND后,回读REG_COMMAND,其值为0xff,资料上说REG_COMMAND只写,读出来后是0x00?<br />这是为什么????
 楼主| fatRonaldo 发表于 2007-7-6 16:39 | 显示全部楼层

re

发送未完成有没有这种可能:因为这个节点与总线连接有硬件问题,所以发送不成功?<br />手册上没有找到相关资料,请大家指教!
 楼主| fatRonaldo 发表于 2007-7-6 16:54 | 显示全部楼层

re 最新调试程序(发送节点的)

//----------------------------------------------------------------------------------------<br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;MCU_Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;RST&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SJA_EnterRestModel();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetBaudRate();<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_BTR0;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x09;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_BTR1;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x1c;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetObject(0xaa,&nbsp;0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_ACR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_AMR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x00;<br /><br /><br />//&nbsp;&nbsp;&nbsp;&nbsp;SJA_SetOutandClock(0xaa,&nbsp;0x48);<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_OUTCTR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_CDR;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x48;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_CONTROL;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x1e;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;SJA_QuitResetModel();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;send(0x01);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />//-----------------------------发送部分--------------------------------------<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检测状态寄存器的值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((*SJA_BasicAddr&nbsp;&&nbsp;TCS_STA)&nbsp;!=&nbsp;TCS_STA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待上次发送完毕<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;TBS_STA)&nbsp;!=&nbsp;TBS_STA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待发送缓冲区释放<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x02);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检测状态寄存器的值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_TxBuffer1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;送ID号高8位:01010101<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_TxBuffer2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;送ID号低3位,数据标志位,长度:000&nbsp;0&nbsp;0001<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_TxBuffer3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;发送数据0x66<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x66;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检测状态寄存器的值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_COMMAND;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;启动发送命令<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x03);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;延时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检测状态寄存器的值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_COMMAND;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;终止发送<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;0x02;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检测状态寄存器的值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;TCS_STA)&nbsp;!=&nbsp;TCS_STA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待发送完毕<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send&nbsp;(0x04);<br /><br /><br />//---------------------------接收部分-----------------------------------------<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检测状态寄存器的值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RBS_STA)&nbsp;!=&nbsp;RBS_STA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待接收缓冲区有数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x05);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_RxBuffer1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取ID&nbsp;号<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_RxBuffer2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取ID号低3位、数据标志位、数据长度&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_RxBuffer3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;*SJA_BasicAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_COMMAND;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;释放接收缓冲区<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SJA_BasicAddr&nbsp;=&nbsp;RRB_CMD;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA_BasicAddr&nbsp;=&nbsp;BASIC_ADDR&nbsp;+&nbsp;REG_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;检查接收缓冲区状态<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((*SJA_BasicAddr&nbsp;&&nbsp;RBS_STA)&nbsp;!=&nbsp;RBS_STA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(0x06);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEEP&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />现在的问题,是跟踪到启动发送命令后,查询发送完成标志位,一直都是发送未完成!!!<br />
 楼主| fatRonaldo 发表于 2007-7-6 16:55 | 显示全部楼层

补充

send()是向串口发送数据,用于跟踪程序!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

25

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部