📄 方波发生器.c
字号:
#include "reg52.h"
#include "absacc.h"
#define uchar unsigned char
#define uint unsigned int
uchar bpq=0;
uchar bdata bpqh; //高地址
sbit m7 = bpqh^7; //高地址位
uchar bdata bpql; //底地址
sbit l7 = bpql^7; //地地址位
sbit SDA= P1^4; //数据
sbit SCL=P1^5; //时序脉冲
sbit CS=P1^6; //选通
void TLC5615()
{
uchar i;
SCL = 0;//置零SCL,为写bit做准备,芯片规定要开始为低电平,上升沿有效
CS = 0; //选通
for(i=0;i<2;i++)//循2次,发送高两位;
{
if(m7) //高位先发;
{
SDA = 1; //将数据送出;
SCL = 1; //提升时钟,写操作在时钟上升沿触发;
SCL = 0; //结束该位传送,为下次写作准备;
}
else
{
SDA = 0;
SCL = 1;
SCL = 0;
}
bpqh <<= 1;
}
for(i=0;i<8;i++)//循环八次,发送低八位;
{
if(l7)
{
SDA = 1; //将数据送出;
SCL = 1; //提升时钟,写操作在时钟上升沿触发;
SCL = 0; //结束该位传送,为下次写作准备;
}
else
{
SDA = 0;
SCL = 1;
SCL = 0;
}
bpql <<= 1;
}
for(i=0;i<2;i++)//循环2次,发送两个虚拟位;
{
SDA = 0;
SCL = 1;
SCL = 0;
}
CS = 1;
SCL = 0;
}
void delay(void)
{ uint i;
for(i=0;i<4105;i++);
}
void main(void)
{
uint i;
while(1)
{ i=0;
bpqh=i/bpq;
bpql=i%bpq;
bpqh<<= 6;
TLC5615();
delay(); delay(); delay();delay();
i=1023;
bpqh=i/bpq;
bpql=i%bpq;
bpqh<<= 6;
TLC5615();
delay(); delay();delay();delay();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -