谁能帮我写下用8051单片机的串行口外接串入并出的芯片CD4094的程序的注释

谁能帮我写下用8051单片机的串行口外接串入并出的芯片CD4094的程序的注释,第1张

#include<reg51.h>

sbit p1_0=p1^o//管脚定义,可能是光耦三极管,错把字母o当成数字0

void main()

{

unsigned char i,j

SCON=0x00//串口工作方式0,允许接收

j=0x01//要从串口发送的数据

for()//死循环,相当于while(1)

{

p1_0=0

SBUF=j//j送到SBUF,从串口发送

while(!TI) { }//等待发送完成

p1_0=0TI=0//TI软件清0

for ( i=0i<=254i++) { }//延时

j=j*2//左移一位,即led灯往左轮流亮

if (j= =0x00) j=0x01//一轮左移完成,从头再次左移,循环左移

}

}

可以使用位 *** 作指令,使用并行口来模拟串行口,达到向“串入并出寄存器”输入数据的目的

发送ACC到4094的子程序如下:

SEND_ACC:

MOV R2, #8

S_LOOP:

RRC A A中的最低位移动到C

MOV P3.3, C 移动到D口

NOP

CLR P3.4 P3.4输出一个脉冲

NOP

NOP

SETB P3.4

DJNZ R2, S_LOOP

RET

#include <reg51.h>

#include <intrins.h>

sbit DAT=P1^2

sbit CLK=P1^1

sbit STB=P1^0

void Delay500ms()

void OUT_4094(unsigned char n)

void main()

{

unsigned char i

for(i=0i++)

{

OUT_4094(i)

Delay500ms()

}

}

void Delay500ms() //@12.000MHz

{

unsigned char i, j, k

_nop_()

i = 4

j = 205

k = 187

do

{

do

{

while (--k)

} while (--j)

} while (--i)

}

void OUT_4094(unsigned char n)

{

 unsigned char i

 DAT=0

 CLK=0

 STB=0

 for(i=0i<8++i)

 {

  CLK=0

  DAT=(n>>(8-i-1))&0x01

_nop_()

  CLK=1

CLK=0

 }

 STB=1

 _nop_()

 DAT=0

 CLK=0

 STB=0

 

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11214810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存