📄 ceshi.c
字号:
#include<XC886CLM.H>
#include<stdio.h>
#include "can.h"
void can_read(uword addr)
{
CAN_ADL=(addr>>2)&0xff;
CAN_ADH=(addr>>10)&0x0f;
RWEN=0;
while(BSY==1);
// BSY=0;
}
//置位
void set_bit(uword addr,uchar bitnum,uchar value)
{
uchar i=1;
//can_read(addr);
CAN_ADL=(addr>>2)&0xff;
CAN_ADH=(addr>>10)&0x0f;
if(bitnum<8) {
V0=1;
if(value)
CAN_DATA0|=(i<<bitnum);
else
CAN_DATA0&=~(i<<bitnum);
}
else if((bitnum>=8)&&(bitnum<16))
{
V1=1;
if(value)
CAN_DATA1|=(i<<(bitnum-8));
else
CAN_DATA1&=~(i<<(bitnum-8));
}
else if(bitnum>=16&&bitnum<24)
{
V2=1;
if(value)
CAN_DATA2|=(i<<(bitnum-16));
else
CAN_DATA2&=~(i<<(bitnum-16));
}
else if(bitnum>=24&&bitnum<32)
{
V3=1;
if(value)
CAN_DATA3=(i<<(bitnum-24));
else
CAN_DATA3=~(i<<(bitnum-24));
}
RWEN=1;
while(BSY==1);
}
void can_write(uword addr,ulong value)
{
CAN_ADL=(addr>>2)&0xff;
CAN_ADH=(addr>>10)&0x0f;
CAN_DATA0=value&0xff;
//P3_DATA=CAN_DATA0;
CAN_DATA1=(value>>8)&0xff;
CAN_DATA2=(value>>16)&0xff;
CAN_DATA3=(value>>24)&0xff;
CAN_ADCON=0xf1;
while(BSY==1);
//BSY=0;
}
int main()
{
//设置ncr0 (p495)
P3_init();
PORT_PAGE=0;
can_write(0x0200,0x004e);
//P3_DATA=2;
//write_pancom(0x02,0x00,0x01);
//can_read(0x0200);
//CAN_DATA0=0X55;
//set_bit(PANCTR,8,0);
//set_bit(PANCTR,9,0);
//write_pancom(0x02,0x03,0x01);
//can_read(0X01C4);
//set_bit(MOCTR0,SETTXEN0,1);
//set_bit(MOCTR0,SETTXEN1,1);
set_bit(MOCTR0,SETDIR,1);
can_read(MOSTAT0);
//CAN_DATA0=8;
PORT_PAGE=0;
P3_DATA=CAN_DATA1;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -