请教高手 这段51 程序如何移值到PIC 16F877上面. 想了一天,总是感觉不通.

2020-02-08 12:20发布

这是网上下的一段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;   
   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
lance5
1楼-- · 2020-02-08 14:10
#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;   
   }
}
gaolf_2000
2楼-- · 2020-02-08 16:27
 精彩回答 2  元偷偷看……
surf_131
3楼-- · 2020-02-08 20:32
lz问题提得有些白菜了。
pic没有比特变量十分直观易用的写法。但是仅仅是写法而已。面向端口指定位的操作很多,也很便利。
sn516952
4楼-- · 2020-02-09 00:56
回复【1楼】lance5  
#include "pic.h"
#define  cs  rc3;  //片选
#define  sid rc4;  //数据传送
#define  sck rc5;  //时钟
void w_12864byte(uchar byte)
{
   uchar i;
   for(i=0;i&lt;8;i++)
   {
      sck=0;      
      sid=(byte&lt;&lt;i)&amp;0x80);      
      sck=1;   
   }
}

-----------------------------------------------------------------------
首先感谢你的指点,不过这里有一点还是不明白.

sid=(byte<<i)&0x80);&#160;&#160;&#160;

这个SID  只是bit型的, (byte<<i)&0x80) 这个结果还是char型的,把一个char型的变量赋给一个引脚,而不是一个端口,能这样赋值吗?这样操作的结果是什么?这样数据类型不对,能改变的过来吗?  

不知道我这样理解的对不对?还请各位朋友继续指点...
sn516952
5楼-- · 2020-02-09 01:47
回复【2楼】gaolf_2000  
void w_12864byte(uchar byte)
{
   uchar i;
   for(i=0;i&lt;8;i++)
   {
      sck=0;      
      sid=byte&amp;0x80;      
      sck=1;
      byte&lt;&lt;=1;   
   }
}  
-----------------------------------------------------------------------

对于二楼的    sid=byte&0x80;    也是同样的问题.这个数据的变化过程是怎么样的,byte&0x80的值是8位的,  sid的值却是1位的.
sn516952
6楼-- · 2020-02-09 03:25
回复【3楼】surf_131  
lz问题提得有些白菜了。
pic没有比特变量十分直观易用的写法。但是仅仅是写法而已。面向端口指定位的操作很多,也很便利。
-----------------------------------------------------------------------

面向端口指定位的操作很多  

可以说的更具体一点吗?

比如: ?

一周热门 更多>