51单片机串行口并/串、串/并转换实验
一、实验内容


利用MCS-51单片机P1.2做控制信号(把并转串单元的LOCK和串转并单元的LOCK连接至P1.2。),实现并转串、串转并,并把串转并的数据送到发光二极管单元显示。


二、仿真图


三、代码


C语言实现:

/*

74LS164:串入并出
74LS165:并入串出

*/

#include<reg52.h>
#include<intrins.h>

#define uchar8 unsigned char 
#define uint16 unsigned int

sbit CLK=P1^0;
sbit SH=P2^7;        
uchar8 nSendByte ;

void delay1s(void) 

void main()
{
   int i;

   nSendByte=0x80;
   nSendByte=_crol_(nSendByte,1);
   while(1)
   {
    SH=~SH;
    P0=0x80;
    SH=1;
    for(i=0;i<8;i++)
        {
         CLK=0;
         delay1s();
         CLK=1;        //上升沿有效
        }
   }
}

void delay1s(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}

汇编实现:

/*

74LS164:串入并出
74LS165:并入串出

*/      
        CLK EQU P1.0
        SH  EPQ P2.7
        ORG 0000H
		LJMP START
		ORG 0030H
START:	MOV A,#080H		;1000 0000
        MOV R7,#8
        MOV P0,A
        CLR SH
		NOP 
		SETB SH 
        ACALL DELAY
  OUT:  CPL CLK
		ACALL DELAY
		CPL CLK
		ACALL DELAY 
		DJNZ R7,TLOOP

DELAY:	MOV R6,#0FFH
DELAY1:	MOV R5,#0FFH
		DJNZ R5,$
		DJNZ R6,DELAY1
		RET
		END