发布时间 : 星期日 文章基于CAN总线的步进电机控制系统更新完毕开始阅读
中国计量学院毕业设计(论文)
#define SJA_TXERR XBYTE[SJA_BASE_ADR + 0x0f] 器寄存器
/********************** 验收滤波器寄存器及其位定义 ************************/
#define SJA_ACR0 XBYTE[SJA_BASE_ADR + 0x10] 存器
#define SJA_ACR1 XBYTE[SJA_BASE_ADR + 0x11] 存器
#define SJA_ACR2 XBYTE[SJA_BASE_ADR + 0x12] 存器
#define SJA_ACR3 XBYTE[SJA_BASE_ADR + 0x13]
存器
#define SJA_AMR0 XBYTE[SJA_BASE_ADR + 0x14] 存器
#define SJA_AMR1 XBYTE[SJA_BASE_ADR + 0x15] 存器
#define SJA_AMR2 XBYTE[SJA_BASE_ADR + 0x16] 存器
#define SJA_AMR3 XBYTE[SJA_BASE_ADR + 0x17] 存器
/********************** TX缓冲器地址定义 ************************/
#define SJA_TBSR0 XBYTE[SJA_BASE_ADR + 0x10] #define SJA_TBSR1 XBYTE[SJA_BASE_ADR + 0x11] #define SJA_TBSR2 XBYTE[SJA_BASE_ADR + 0x12] #define SJA_TBSR3 XBYTE[SJA_BASE_ADR + 0x13] #define SJA_TBSR4 XBYTE[SJA_BASE_ADR + 0x14] #define SJA_TBSR5 XBYTE[SJA_BASE_ADR + 0x15] #define SJA_TBSR6 XBYTE[SJA_BASE_ADR + 0x16] #define SJA_TBSR7 XBYTE[SJA_BASE_ADR + 0x17]
5
//TX 错误计数
//验收代码0寄//验收代码1寄//验收代码2寄//验收代码3寄
//验收屏蔽0寄//验收屏蔽1寄//验收屏蔽2寄//验收屏蔽3寄
中国计量学院毕业设计(论文)
#define SJA_TBSR8 XBYTE[SJA_BASE_ADR + 0x18] #define SJA_TBSR9 XBYTE[SJA_BASE_ADR + 0x19] #define SJA_TBSR10 XBYTE[SJA_BASE_ADR + 0x1a] #define SJA_TBSR11 XBYTE[SJA_BASE_ADR + 0x1b] #define SJA_TBSR12 XBYTE[SJA_BASE_ADR + 0x1c]
/********************** RX缓冲器地址定义 ************************/
#define SJA_RBSR0 XBYTE[SJA_BASE_ADR + 0x10] #define SJA_RBSR1 XBYTE[SJA_BASE_ADR + 0x11] #define SJA_RBSR2 XBYTE[SJA_BASE_ADR + 0x12] #define SJA_RBSR3 XBYTE[SJA_BASE_ADR + 0x13] #define SJA_RBSR4 XBYTE[SJA_BASE_ADR + 0x14] #define SJA_RBSR5 XBYTE[SJA_BASE_ADR + 0x15] #define SJA_RBSR6 XBYTE[SJA_BASE_ADR + 0x16] #define SJA_RBSR7 XBYTE[SJA_BASE_ADR + 0x17] #define SJA_RBSR8 XBYTE[SJA_BASE_ADR + 0x18] #define SJA_RBSR9 XBYTE[SJA_BASE_ADR + 0x19] #define SJA_RBSR10 XBYTE[SJA_BASE_ADR + 0x1a] #define SJA_RBSR11 XBYTE[SJA_BASE_ADR + 0x1b] #define SJA_RBSR12 XBYTE[SJA_BASE_ADR + 0x1c]
#define SJA_RMC XBYTE[SJA_BASE_ADR + 0x1d] //RX 信息计数器 寄存器
#define SJA_RBSA XBYTE[SJA_BASE_ADR + 0x1e] //RX 缓冲区起始地址 寄存器
/********************** 时钟分频寄存器地址定义 ************************/
#define SJA_CDR XBYTE[SJA_BASE_ADR + 0x1f] 存器
#define CLKOff_BIT 0x08 //时钟关闭位,时钟输出管脚控制位
6
//时钟分频 寄
中国计量学院毕业设计(论文)
#define RXINTEN_BIT 0x20 //用于接收中断的管脚TX1
#define CBP_BIT 0x40 //CAN 比较器旁路控制位
#define CANMode_BIT 0x80 //CAN 模式控制位 #endif
main.c 文件
#include
sbit LED = P3^4;//低电平有效 硬件测试用 sbit L1 = P1^0; sbit L2 = P1^1; sbit L3 = P1^2; sbit L4 = P1^3; sbit L5 = P1^4; sbit L6 = P1^5; sbit L7 = P1^6; sbit L8 = P1^7; extern canid; unint txdata; unint dispy;
unsigned char code FFW[8]= {0xe8,0xc8,0xd8,0x98,0xb8,0x38,0x78,0x68}; //反转
unchar time=0;//初值为0,当为100时,表示定时器0计数到1秒了,这时就自动发一次数据
unchar rxflag=0;//是否接收到数据标志,初值为0表示没有收到数据,为1表示收到了数据
7
A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度)
unsigned char code FFZ[8]= {0x68,0x78,0x38,0xb8,0x98,0xd8,0xc8,0xe8}; //正转
中国计量学院毕业设计(论文)
void mcu_init(); //单片机初始化
//延时
void init_delay10ms (void); void mDelay(unint mtime); void delay(unsigned int t); void main() {
unchar i; mcu_init(); peli_caninit();
init_delay10ms(); //初始化定时器0 TR0=1;//打开定时器0,开始计数 while(1) {
for (i=0; i<8; i++) //一个周期转30度 { P1=0; if(dispy==1) {
P2 = FFW[i]; L1=1; delay(30); }
else if(dispy==2) {
P2 = FFZ[i]; L2=2;
delay(30); //调节转速 }
else if(dispy==3) {
P2 = FFW[i]; L3=1; delay(20); }
else if(dispy==4)
8
//取数据
//取数据