serial.c

来自「无线单片机CC1110的一些使用源代码」· C语言 代码 · 共 78 行

C
78
字号
//serial out
#include <ioCC1110.h>
#include "emot.h"
#define uchar unsigned char
#define uint unsigned int
#define SDA P1_6      //数据
#define SHIFT_CP P1_5 //时钟
#define ST_CP P1_7    //锁存

#define NOP delay595()

//uchar SelectBit[]={0x04,0x08,0x10,0x20};//用于选择位 p0 pin 2 3 4 5
uchar SelectBit[]={0x40,0x20,0x10,0x08};//用于选择位 p0 pin 3 4 5 6
uchar ledcode[]={0x3f,0x18,0x76,0x7c,0x59,0x6d,0x6f,0x38,0x7f,0x7d,0x80,0x00};
uchar ledbit = 0;

uchar ii;

void delay595(void)
{
    uchar jj=100;
    while(jj--);
}

void Delay(unsigned int time)
{
  unsigned int abc=time;
  while(abc--)
  {
    delay595();
  }
}

void InitSerialIO(void)
{
  P1DIR |= 0X20;  //P15 OUT AS SHIFT_CP
  P1DIR |= 0X40;  //P06 OUT AS SDA
  P1DIR |= 0X80;  //P17 OUT AS ST_CP

  P1 &= ~0XE0;

  P0DIR |= 0x78; //输出,作为位选
  P0 &= ~0x78;    //关闭,高电平有效

  SDA = 0;
  SHIFT_CP = 0;
  ST_CP = 0;
}

void SerialSendData(uchar dat)
{
  uchar ii;
  uchar sdata=dat;
  ST_CP = 0;
  P1_4 = 1;       //TC77 cs
  for(ii=0;ii<8;ii++)
  {
    if(sdata&0x80)SDA=1;
else SDA = 0;
    sdata<<=1;
    SHIFT_CP =0;
    NOP;
    NOP;
    SHIFT_CP = 1;
    NOP;
    NOP;
  }
  ST_CP = 1;
  /*
  NOP;
  NOP;
  ST_CP = 0;
  NOP;
  NOP;
  ST_CP = 1;
  */
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?