这是网上下的一段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;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#define cs RC3; //片选
#define sid RC4; //数据传送
#define sck RC5; //时钟
void w_12864byte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
sck=0;
sid=(byte<<i)&0x80);
sck=1;
}
}
pic没有比特变量十分直观易用的写法。但是仅仅是写法而已。面向端口指定位的操作很多,也很便利。
#include "pic.h"
#define cs rc3; //片选
#define sid rc4; //数据传送
#define sck rc5; //时钟
void w_12864byte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
sck=0;
sid=(byte<<i)&0x80);
sck=1;
}
}
-----------------------------------------------------------------------
首先感谢你的指点,不过这里有一点还是不明白.
sid=(byte<<i)&0x80);   
这个SID 只是bit型的, (byte<<i)&0x80) 这个结果还是char型的,把一个char型的变量赋给一个引脚,而不是一个端口,能这样赋值吗?这样操作的结果是什么?这样数据类型不对,能改变的过来吗?
不知道我这样理解的对不对?还请各位朋友继续指点...
void w_12864byte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
sck=0;
sid=byte&0x80;
sck=1;
byte<<=1;
}
}
-----------------------------------------------------------------------
对于二楼的 sid=byte&0x80; 也是同样的问题.这个数据的变化过程是怎么样的,byte&0x80的值是8位的, sid的值却是1位的.
lz问题提得有些白菜了。
pic没有比特变量十分直观易用的写法。但是仅仅是写法而已。面向端口指定位的操作很多,也很便利。
-----------------------------------------------------------------------
面向端口指定位的操作很多
可以说的更具体一点吗?
比如: ?
一周热门 更多>