这是网上下的一段12864 串口的程序 我现在想把他用在PIC16F877单片机上面,但是这段我想不出来怎么个改法.
还请熟悉的朋友指点一下.
sbit cs =P2^4; //片选
sbit sid=P2^2; //数据传送
sbit sck=P2^0; //时钟
/*********************************************
函数名称:写字节函数
函数功能:
**********************************************/
void w_12864byte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
sck=0; //
byte<<=1;
sid=CY; //CY是51特有的,现在用在PIC单片机上要怎么改,有人说用&0X80 可是我还是没有思路.具体要怎么写呢,请指教.
sck=1;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
volatile bit DIN @ (unsigned)&PORTC*8+0;
volatile bit CS @ (unsigned)&PORTC*8+1;
volatile bit CLK @ (unsigned)&PORTC*8+2;
void WriteByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
CLK = 0;
NOP();
DIN = ((dat<<i)&0x80)?1:0;
CLK = 1;
NOP();
}
}
#include<pic.h>
volatile bit din @ (unsigned)&portc*8+0;
volatile bit cs @ (unsigned)&portc*8+1;
volatile bit clk @ (unsigned)&portc*8+2;
void writebyte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
clk = 0;
nop();
din = ((dat<<i)&0x80)?1:0;
clk = 1;
nop();
}
}
-----------------------------------------------------------------------
volatile bit RC0 @ ((unsigned)&PORTC*8)+0;
volatile bit RC1 @ ((unsigned)&PORTC*8)+1;
volatile bit RC2 @ ((unsigned)&PORTC*8)+2;
这个在PIC16F877.H里面已经定义过了,是不是不用再写 volatile bit din @ (unsigned)&portc*8+0; 来定义了.
直接 SID=RC0; 也一样能用吧?
我习惯这样重新定义我想要的名字
直观啊
还有 你也可以直接宏定义也可以的
#define SID RC0
这个也行
一周热门 更多>