�������gӭ�M�������зf���¿Ƽ�����˾�ٷ��W(w��ng)վ��
�����c����ͨӍ��ʽ
���У����ƺ�������ݔ�ٶȿ졣�������L���x�ɱ��^����ͬ�r�������y��
���У�����(sh��)��(j��)�ֹ�(ji��)�ֳ�һλһλ�������һ�l��ݔ�����M�Ђ�ݔ����D��
ͬ���c��������ͨӍ��ʽ
ͬ������ͨӍ��ʽ��ͬ��ͨӍ��Ҫ�����l(f��)�ͷ������շ��r犵�ֱ�ӿ��ƣ����p���_����ȫͬ����
��������ͨӍ��ʽ��ͨӍ�İl(f��)�ͺͽ����O(sh��)��ʹ�ø��Եĕr犿��Ɣ�(sh��)��(j��)�İl(f��)�ͺͽ�������ʹ�p���հl(f��)�f(xi��)�{(di��o)��Ҫ��l(f��)�ͺͽ��յĕr犱M����һ�¡���D��
����ͨӍ��ʽ�����c��
����ͨӍ���ַ���(g��u)�ɵĎ����λ�M�Ђ�ݔ���ַ��c�ַ�֮�g���g϶������ģ���ÿ���ַ��еĸ�λ���Թ̶��ĕr�g���͵�����һ���ַ���Ϣ��4���ֽM�ɣ���ʼλ����(sh��)��(j��)λ����ż�z�λ��ֹͣλ���چ�Ƭ�C�е�ͨӍһ����r�¾�ʹ���@�N����ʽ����D��
����ͨӍ����ʽ
�ι�����(sh��)��(j��)��ݔ�H��һ�����������܌��F(xi��n)�����ݔ
���p������(sh��)��(j��)�����ɂ������ݔ��������Ҫ�֕r
ȫ�p������(sh��)��(j��)����ͬ�r�M���p���ݔ
����ͨӍ���N�e�`У�����żУ������a��У���ѭ�h(hu��n)����У�
RS232�ƽ�cTTL�ƽ���D(zhu��n)�Q
PCʹ�õĴ��ڵ��ƽ��RS232�ľ�ᘴ�����MCUʹ�õ��ƽ��TTL�ƽ��Ҫʹ��PC ��MCU�M��ͨӍ������Ҫ�����ƽ�O���D(zhu��n)�Q����Ҫ�Ď��ƽ�D(zhu��n)�QоƬ��MAX232��MAX202��HIN232��SIPEX320��
����ͨӍ�ٶȵĶ��x_������
����ͨӍ�������ò����ʱ�ʾ���䶨�x�飺
ÿ��犂��Ͷ��M�ƴ��a��λ��(sh��)����1����=1λ/�룬��λbps��λ/�룩
eg��ÿ��犂���240���ַ�����ÿ���ַ���ʽ����10λ��1��ʼ��8��(sh��)��(j��)��1ֹͣ�����˕r�IJ����ʞ飺
10λ*240��/��=2400bps
����ͨӍ�����ʵ�Ӌ��
��Ƭ�C�Ĵ��пڿ��O(sh��)�����ķN������ʽ�����з�ʽ0�ͷ�ʽ2�����ʹ̶�����ʽ1�ͷ�ʽ3�����ʿ�׃���ɶ��r��T1������ʁ�Q����Ӌ�㹫ʽ���£�
���У�fosc��ϵ�y(t��ng)�����l����ͨ����12MHz������11.0592MHz����SMOD��PCON�Ĵ��������λ��T1������ʼ����r��T1������l�ʡ�
�Դ�����Ĵ���_PCON
SMOD;ԓλ�c��ͨ�Ų��������P(gu��n)��
SMOD=0�����ڷ�ʽ1��2��3�r������������
SMOD=1�����ڷ�ʽ1��2��3�r�������ʼӱ�
SMOD0��LVDF��P0F������λ��STC_MCU �����е����ɲ鿴���P(gu��n)�փ���
GF1��GF0���ɂ�ͨ�Ø�(bi��o)־λ�����S��ʹ����
PD�����ģʽ�O(sh��)��λ��
PD=0��MCU��������
PD=1��MCU�M����ģʽ
IDL�����eģʽ�O(sh��)��λ
IDL=0��MCU��������
IDL=1����Ƭ�C�M����eģʽ
��Ƭ�C�ăɷNģʽ��B(t��i)��
���ģʽ���M����ģʽ��������ͣ����CPU�����r�������п�ȫ��ֹͣ������ֻ���ⲿ�Д��^�m(x��)������
�����ⲿ�Д���ƽ�|�l(f��)���½����|�l(f��)��Ӳ����(f��)λģʽ������
���eģʽ����CPU�����������������^�m(x��)�������ڿ��eģʽ����������һ���Д����Ӳ����(f��)λ����
T1�������
T1������ʾ���T1���r��������l�ʣ�ֻҪ���T1���r��ÿһ̎һ������ĕr�gT����ôT�ĵ���(sh��)���������������
51���пڽY(ji��)��(g��u)
51��Ƭ�C���п���һ���ɾ���ȫ�p����ͨ�Žӿڣ�����Uart��ͨ�î����հl(f��)������ȫ����������ͬ�r�M�Д�(sh��)��(j��)�İl(f��)���c������Ҳ������ͬ��һλ�Ĵ���ʹ�á�
51_MCU��Ҫ�Ƀɂ������Ĵ��Д�(sh��)��(j��)���_�Ĵ���SBUF ��һ���l(f��)����һ�����գ��Ͱl(f��)�Ϳ����������տ�����,ݔ����λ�Ĵ��������ɿ����T�·����D��
���пڿ��ƼĴ���_SCON
SM0,SM1;������ʽ�x��λ�����������й�����ʽ�����£�
SM2�����Cͨ�ſɿ���λ��SM2��Ҫ���ڷ�ʽ2�ͷ�ʽ3����(d��ng)���ՙC��SM2=1�r�����������յ�RB8�������Ƿ�RI;
RB8=0��������RI���յ�����Ϣ�G��
RB8=1���յ��Ĕ�(sh��)��(j��)�M��SBUF��������RI���M�����Д����(w��)�Ќ���(sh��)��(j��)��SBUF�x����
��(d��ng)SM2=0�r���oՓ�յ���RB8��0߀��1�����������յ��Ĕ�(sh��)��(j��)�M��SBUF��������RI��ͨ�^����SM2�Ɍ��F(xi��n)���Cͨ����
�ڷ�ʽ0�r��SM2�����0��
�ڷ�ʽ1�r����SM2=1���tֻ�н��յ���Чֹͣλ�r��RI����1
REN�����S���н���λ
REN=1�����S���пڽ��Ք�(sh��)��(j��)
REN=0����ֹ���пڽ��Ք�(sh��)��(j��)
TB8����ʽ2��3�аl(f��)�͔�(sh��)��(j��)�ĵھ�λ���ɶ��x����������ż�z�����ַ����(bi��o)־������ʽ0��1����δʹ��
RB8����ʽ2��3�н��Ք�(sh��)��(j��)�ĵھ�λ���ɶ��x����������ż�z�����ַ����(bi��o)־�ȣ���ʽ1����SM2=0���tRB8�ǽ��յ���ֹͣλ��
TI;�l(f��)���Д���(bi��o)־λ����ʽ0�������аl(f��)�͵�8λ��(sh��)��(j��)�Y(ji��)���r������������ʽ�����аl(f��)��ֹͣλ�r���Ƀ�(n��i)��Ӳ����1����CPU�l(f��)���Д���Ո�����Д����(w��)�����������ܛ��������ȡ�����Д���Ո��
RI�������Д���(bi��o)־λ�� ��ʽ0�������н��յ�8λ��(sh��)��(j��)�Y(ji��)���r������������ʽ�����н���ֹͣλ�r���Ƀ�(n��i)��Ӳ����1����CPU�l(f��)���Д���Ո�����Д����(w��)�����������ܛ�����㣬ȡ�����Д���Ո
���ڷ�ʽ0�����пڞ�ͬ����λ�Ĵ�����ݔ��ݔ����ʽ����Ҫ�����Uչ����ݔ��ݔ���ӿ�����(sh��)��(j��)��RXD��P3.0�����_ݔ�����ݔ����ͬ����λ�}�_��TXD��P3.1�����_ݔ�����l(f��)�ͺͽ��վ���8λ��(sh��)��(j��)����λ��������λ�ں��������ʹ̶�fosc/12
���ڷ�ʽ1��10λ��(sh��)��(j��)һ��ͨӍ����1��ʼ��8��(sh��)��(j��)��1ֹͣ��TXD��P3.1���锵(sh��)��(j��)�l(f��)�����_��RXD��P3.0���锵(sh��)��(j��)�������_�����ݔ�����ʿ�׃����51�������������ж��r��1������ʶ��Q����һ��������چ�Ƭ���چ�Ƭ�C����Ƭ�C�cӋ��C��Ӌ��C�cӋ��C����ͨӍ�r�����������x��ʽ1�����Դ˷N��ʽ���������
���ڷ�ʿ2,3��11λ��(sh��)��(j��)�Į���ͨӍ����XD��P3.1���锵(sh��)��(j��)�l(f��)�����_��RXD��P3.0���锵(sh��)��(j��)�������_�����@�ɷN��ʽ�£�1��ʼ��9��(sh��)��(j��)��1ֹͣ��һ����(sh��)��(j��)11λ����ʽ2�IJ����ʹ̶��龧�����l�ʵ�1/64��1/32����ʽ3�IJ������ɶ��r��1������ʛQ����
��ʽ2�ͷ�ʽ2�IJ�e�H���ڲ����ʵ��xȡ��ͬ���ɷN��ʽ�£����յ���ֹͣλ�cSBUF��RB8��RI���o�P(gu��n)��
���ڷ�ʽ1�ľ��̌��F(xi��n)
��ʽ1��(sh��)��(j��)ݔ���r��D���£�
��(d��ng)��(sh��)��(j��)������SBUF�Ĵ���������Ƭ�C�Ԅ��_ʼ����ʼλ�l(f��)�͔�(sh��)��(j��)���l(f��)�͵�ֹͣλ���_ʼ�r��
�Ƀ�(n��i)��Ӳ����TI��1����CPU��Ո�Д������������Д����(w��)�������M�����P(gu��n)̎����Ҳ���x���M���Д���
��ܛ����REN��1�r�������������x�����ʵ�16�����ʲɘ�RXD���_�ƽ��
�z�y��RXD���_ݔ���ƽ�l(f��)ؓ��׃�r���t�f����ʼλ��Ч��
��������ݔ����λ�Ĵ������_ʼ�����@һ����Ϣ������λ��
�����^��������(sh��)��(j��)��ݔ����λ�Ĵ�����߅��������ʼλ����ݔ����λ�Ĵ���������߅��
�����·�M�����һ����λ����(d��ng)RI=0��SM2=0����Y(ji��)�յ���ֹͣλ��1���r��
�����ܵ���9λ��(sh��)��(j��)ǰ8λ��(sh��)��(j��)�b�����SBUF���ھ�λ��ֹͣλ���M��RB8������RI=1����CPU��Ո�Д���
���M�д��ڵ����P(gu��n)����֮ǰ����Ҫ����Ƭ�C��һЩ����Ĵ������M�г�ʼ���O(sh��)��
��Ҫ���O(sh��)�îa(ch��n)�������ʵĶ��r��1�����пڿ��ƺ��Д���������w���E���£�
�_��T1�Ĺ�����ʽ������TMOD�Ĵ�����
Ӌ��T1�ij�ֵ���b�dTH1��TL1
����T1������TCON�е�TR1λ��
�_�����пڹ�����ʽ������SCON�Ĵ�����
���пڹ������Дʽ�r��Ҫ�M���Д��O(sh��)�ã�����IE��IP�Ĵ�����
-----------------------------------------------------------------------------------------------------------------------
//���ڷ�ʽ1
TMOD=0X20; //T1���r����������ʽ2
TH1=0XFD; //T1���r���b��ֵ
TL1=0XFD; //T1���r���b��ֵ
TR1=1; //����T1���r��
REN=1; //���S���ڽ���
SM0=0; //�O(sh��)�����ڹ�����ʽ1
SM1=1; //�O(sh��)�����ڹ�����ʽ1
EA=1; //�_����
ES=1; //�_������
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//���������(w��)����
void ser() interrupt 4
{
RI=0; //RI���㣻����յ���(sh��)��(j��)�����߰l(f��)���˔�(sh��)��(j��)����Ӳ����1
a=SBUF; //��SBUF�еĔ�(sh��)��(j��)�x�߽oa
flag=1; //�Д���(bi��o)־λ��1
}
-----------------------------------------------------------------------------------------------------------------------
���ڷ�ʽ0
���пڞ�ͬ����λ�Ĵ�����ݔ��ݔ����ʽ����Ҫ�����Uչ����ݔ��ݔ���ӿ�����(sh��)��(j��)��RXD��P3.0�����_ݔ�����ݔ����ͬ����λ�}�_��TXD��P3.1�����_ݔ�����l(f��)�ͺͽ��վ���8λ��(sh��)��(j��)����λ��������λ�ں��������ʹ̶�fosc/12��
��ԓģʽ�������пڵ�SBUF������ͬ����λ�Ĵ���ʹ�õġ�
�ڴ��пڰl(f��)�͕r��SBUF�ஔ(d��ng)��һ�������M��������ݔ������λ�Ĵ�����
�Ɇ�Ƭ�C�ă�(n��i)���������н��հ�λ��(sh��)��(j��)������RXD��̖������ݔ�����ڽ��ղ����r�������ஔ(d��ng)��һ������ݔ��������ݔ������λ�Ĵ�����ԓģʽ����SM2��RB8��TB8�������á�
��ʽ0��(sh��)��(j��)ݔ���r��D���£�
�l(f��)�Ͳ�����TI=0�r�M����CPU����(sh��)��(j��)����SBUF����RXD���ϼ��ɰl(f��)��8λ��(sh��)��(j��)��TXD�ϰl(f��)��ͬ���}�_��
8λ��(sh��)��(j��)�l(f��)�������TI��Ӳ����λ�������Д����S����r����CPU��Ո�Д���
CPU����(y��ng)�Д��������ܛ����TI������Ȼ���ٽoSBUF����һ����Ҫ�l(f��)�͵��ַ�������؏�(f��)�����^�̡�
��ʽ0��(sh��)��(j��)ݔ��r��D���£�
�����^����REN=1��RI=0�ėl����������˴��Д�(sh��)��(j��)��RXD��ݔ�룬TXD��ݔ��ͬ���}�_��
�����·���յ�8λ��(sh��)��(j��)����RI�Ԅ���λ�����Д����S�ėl������CPU�l(f��)���Д�Ո��
CPU ��ԃ��RI��1��������(y��ng)�Д��Ժ�㌢SBUF�еĔ�(sh��)��(j��)�͵��ۼ�����RI��Ҫ��ܛ����(f��)λ��
��Ҫע����ǣ�
���пڹ���ģʽ0������һ��ͬ��ͨӍ����ͨӍ��ʽ��
������Ҫ��;���c�����ͬ����λ�Ĵ������B���_���Uչ��Ƭ�Cݔ�벢�пں�ݔ�����пڵ�Ŀ����
�����ͨ�^оƬ��74LS164���Ѵ��ڔ�(sh��)��(j��)�D(zhu��n)���ɲ��ڔ�(sh��)��(j��)��ͨ�^оƬ��74LS165���Ѳ���ݔ���Ĕ�(sh��)��(j��)�D(zhu��n)�Q�ɴ���ݔ��
-----------------------------------------------------------------------------------------------------------------------
ʹ�ô��ڹ���ģʽ0�g���l(f��)�͔�(sh��)��(j��)0XAA
void main()
{
SCON=0; //���пڹ�����ʽ0
EA=1; //�_����
ES=1; //���S������
TI=0; //�l(f��)���Д���(bi��o)־λ
while(1)
{
SBUF=0XAA;
delay();
}
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
void ser0() interrupt 4
{
TI=0; //����l(f��)���Д���(bi��o)־λ
}
-----------------------------------------------------------------------------------------------------------------------
���ڷ�ʽ2�ͷ�ʽ3
����11λ��(sh��)��(j��)�Į���ͨ�ſڣ�Ψһ�ą^(q��)�e���ڂ�ݔ���ʵIJ�ͬ��
TXD��(sh��)��(j��)�l(f��)�����_��RXD��(sh��)��(j��)�������_��1��ʼ��
9��(sh��)��(j��)����1λ���ӵ�9λ���l(f��)�͕r��SCON�е�TB8�����Օr��RB8����1ֹͣ��һ����(sh��)��(j��)11λ��
��ʽ2�IJ����ʹ̶��龧�����l�ʵ�1/64��1/32����ʽ3�IJ������ɶ��r��1������ʛQ����
���ڷ�ʽ2�ͷ�ʽ3һ����(sh��)��(j��)����ʽ����D��
���ڷ�ʽ2�ͷ�ʽ3ݔ���r��D��
�l(f��)���_ʼ�r���Ȱ���ʼλ0ݔ����TXD���_��Ȼ��l(f��)����λ�Ĵ����ĵ�ݔ��λ��D0����TXD���_
ÿһ����λ�}�_��ʹݔ����λ�Ĵ����ĸ�λ����һλ������TXD���_ݔ����
��һ����λ�r��ֹͣλ1����ݔ����λ�Ĵ����ĵ�9λ���Ժ�ÿ����λ����߅��ݔ��0
��(d��ng)ֹͣ��λ��ݔ��λ�r����߅����λȫ�������z�y�·�z�y���@һ�l���r��ʹ�����·�M�����һ����λ������TI=1����CPUՈ���Д���
���ڷ�ʽ2�ͷ�ʽ3ݔ��r��D��
���ܕr����(sh��)��(j��)����߅����ݔ����λ�Ĵ���������ʼλ0�Ƶ�����߅�r�������·�M�����һ����λ��
��(d��ng)RI=0��SM2=0������յ���9λ��(sh��)��(j��)λ1���r�����յ��Ĕ�(sh��)��(j��)�b����վ��_��SBUF��RB8�����Ք�(sh��)��(j��)�ĵ�9λ������RI=1����CPU��Ո�Д�������l�����M�㣬�t��(sh��)��(j��)�Gʧ���Ҳ���λRI���^�m(x��)����RXD���_��ؓ��׃��
�ڷ�ʽ2�ͷ�ʽ3����Ҫ�õ�SCON�Ĵ����е�TB8λ��RB8λ��TB8�锵(sh��)��(j��)�l(f��)�͵ĵ�9λ�����ڷ�ʽ2�ͷ�ʽ3����ܛ��������RB8�锵(sh��)��(j��)���յĵ�9λ�����ڷ�ʽ2�ͷ�ʽ3���ڷ�ʽ1�У����SM2=0���tRB8���ڴ�Ž��յ���ֹͣλ���ڷ�ʽ0�²��m��ԓλ��
-----------------------------------------------------------------------------------------------------------------------
ʹ�ô��ڹ�����ʽ2�l(f��)��0XAA
void main()
{
SM0=1; //SMOSM1��10,���й�����ʽ2
SM1=0; //11λ�����հl(f��)��9λ��(sh��)��(j��)��
TB8=0; //��(sh��)��(j��)�l(f��)�͵ĵ�9λ
EA=1; //�_����
ES=1; //���S������
TI=0; //�l(f��)���Д���(bi��o)־λ
while(1)
{
SBUF=0XAA;
delay();
}
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
void ser0() interrupt 4
{
TI=0; //����l(f��)���Д���(bi��o)־λ
}
-----------------------------------------------------------------------------------------------------------------------
��Ƭ�C�p�Cͨ��
ͨ����Ƭ�Cͨ���������ķN���F(xi��n)��ʽ��
TTL�ƽͨ��
RS-232Cͨ��
RS-422Aͨ��
RS-485ͨ��
TTL�ƽͨ�ţ�
RS-232Cͨ�ţ�
RS-422Aͨ��
RS-422A�(q��)�������p���(q��)����������һ�l����߉��1����һ�l���͞�0��
�߿��ɔ_�ͣ��܉�200mv���ϵ��λ����
��ݔ����90Kbps����ݔ���x���_1200m���ӿ��·���£���ȫ�p����
RS-485ͨ��
RS-485��RS-422A��׃�N��422A��ȫ�p����485����p����
����ʹ��32�������������һ���W(w��ng)�j(lu��)���B�ӳ��^32����߀��ʹ�����^����
������ݔ�����ò����̖�����Կ��ɔ_�Ժ�����ݔ���ʿ��_1Mbps���ӿ����£�
���Cͨ��
�������ĽY(ji��)��(g��u)��������ϵ�y(t��ng)�������҃H��һ�����C������ȫ�ǏęC�����Cͨ������(y��ng)��ѭ��ԭ�t���£�
A.���ЏęC��SM2=1��̎�ڽ��յ�ַ����B(t��i)
B.���C�l(f��)��һ��ַ��������8λ�ǵ�ַ����9λ�ǵ�ַ/��(sh��)��(j��)�^(q��)�֘�(bi��o)־��ԓλ��1��ʾ��ַ����
���ЏęC�յ���ַ�������c�����ĵ�ַ���^�����ڵ�ַ����ďęC��
���Լ���SM2��0���ѽ������C�S��l(f��)���Ĕ�(sh��)��(j��)���������ѱ��C��ַ�l(f��)�����C���鑪(y��ng)��
���ڵ�ַ���������Ա���SM2=1�������C�S��l(f��)���Ĕ�(sh��)��(j��)����������.
C.�ęC�l(f��)�͔�(sh��)��(j��)�Y(ji��)������Ҫ�l(f��)��һ��У�ͣ����õ�9λ��TB8����1������ęC��(sh��)��(j��)�Y(ji��)���Ę�(bi��o)־��
D.���C��C��(sh��)��(j��)�r�����Д���(sh��)��(j��)����(bi��o)־��RB8������RB8=1����ʾ��(sh��)��(j��)���ͽY(ji��)���������^�ˎ�У����
�����_�t�������_��̖00H������ԓ�ęC��(f��)λ�������µȴ���ַ������
��У�ͳ��e���t�l(f��)��0FFH������ԓ�ęC�ذl(f��)��(sh��)��(j��)��
�����܂ɵ�RB8=0���t����(sh��)��(j��)�浽����^(q��)������(zh��n)�������һ����Ϣ��
E.���C�ӵ��ęC��(y��ng)���ַ�����_�J��ַ�Ƿ�����������ַ������
�t�l(f��)��(f��)λ��̖����(sh��)��(j��)����TB8=1���������ַ������tTB8��0���_ʼ�l(f��)�͔�(sh��)��(j��)��
�ęC�յ���(f��)λ������������O(ji��n) ��ַ��B(t��i)��SM2=1������t�_ʼ���Ք�(sh��)��(j��)�����
���̕r���ɰ����·�ʽ������
���C�l(f��)�͵ĵ�ַ(li��n)�j(lu��)��̖��00H��01H��02H��...�����ęC�O(sh��)���ַ������ַFFH��������ęC��(f��)λ�����؏�(f��)SM2=1��
���C����a���£�
01H�����C����ęC���Ք�(sh��)��(j��)��
02H�����C����ęC�l(f��)�͔�(sh��)����
����������(sh��)��(j��)���t����02H������
�ęC��B(t��i)�ָ�ʽ��D��
��ERR =1;�ęC�յ��Ƿ����
��TRDY=1���ęC�l(f��)�͜�(zh��n)��;w
��RRDY=1���ęC���՜�(zh��n)��;w
ͨ�����ęC���Дʽ���ƺ����CͨӍ��
���Cͨ�����C���̈D���£�
������a���£�
-----------------------------------------------------------------------------------------------------------------------
#include
#define uchar unsigned char
#define uint unsigned int
#define SLAVE 0X02 //�ęC��ַ
#define NB 16
uchar rbuf[16];
uchar code tbuf[16]={"master transmit"};
void err()
{
SBUF=0XFF;
while(!TI=1);
TI=0;
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
uchar master(uchar add,uchar com)
{
while(1)
{
SBUF=SLAVE; //�l(f��)���е�ַ
while(!TI=1);
TI=0;
while(!RI=1);
RI=0; //�ȴ��ęC��(y��ng)��
if(SBUF!=add)
{
err(); //��ַ�e�`���l(f��)��(f��)λ��̖
}
else //��ַ���
{
TB8=0; //���ַ��(bi��o)־
SBUF=cmd; //�l(f��)����
while(!TI=1);
TI=0;
while(!RI=1);
RI=0;
aa=SBUF; //���ՠ�B(t��i)
if(aa&0x08==0x08) //������δ���������l(f��)��(f��)λ��̖
{
TB8=1;
err();
}
else
{
if(cmd==0X01) //�l(f��)������
{
if(aa&0x01==0x01) //�ęC��(zh��n)��ý���
{
do
{
p=0; //����
for(i=0;i
{
SBUF=tbuf[i]; //�l(f��)��һ��(sh��)��(j��)
p+=tbuf[i];
while(!TI=1);
TI=0;
}
SBUF=p; //�l(f��)�͙z��
while(!TI=1);
TI=0;
while(!RI=1);
RI=0;
}
while(SBUF!=0); //���ղ����_�����°l(f��)��
TB8=1; //�õ�ַ��(bi��o)־
return(0);
}
else
if(aa&0x02==0x02) //�ǽ����������ęC��(zh��n)��ðl(f��)��
{
while(1)
{
p=0; //��z��
for(i=0;i
{
while(!RI=1);
RI=0;
rbuf[i]=SBUF; //����һ��(sh��)��(j��)
p+=rbuf[i];
}
while(!RI=1);
RI=0;
if(SBUF==p)
{
SBUF=0x00; //У����ͬ�l(f��)0X00
while(!TI=1);
TI=0;
break;
}
else
{
SBUF=0xFF;
while(!TI=1);
TI=0;
}
}
TB8=1; //�õ�ַ��(bi��o)־
return(0);
}
}
}
}
}
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
void main()
{
TMOD=0x20; //T/C1���x�鷽ʽ2
TL1=0XFD; //�ó�ֵ
TH1=0XFD;
PCON=0X00;
TR1=1;
SCON=0XF0; //���пڷ�ʽ3
master(SLAVE,0x01);
master(SLAVE,0X02);
while(1);
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
���Cͨ�ŏęC���̈D��
�������£�
-----------------------------------------------------------------------------------------------------------------------
#include
#define uchar unsigned char
#define uint unsigned int
#define SLAVE 0X02
#define BN 16
uchar trbuf[16];
uchar rebuf[16];
bit tready;
bit rready;
void str(void);
void sre(void);
void main()
{
TMOD=0x20; //T/C1���x�鷽ʽ2
TH1=0XFD;
TL1=0XFD;
PCON=0X00;
TR1=1;
SCON=0XF0;
ES=1; //�_�����
EA=1; //�_����
while(1)
{
tready=1;
rready=1;
} //�ٶ���(zh��n)��ðl(f��)�ͺͽ���
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
void ssio(void) interrupt 4
{
uchar a;
RI=0;
ES=0;
if(SBUF!=SLAVE)
{
ES=1;
goto reti;
} //�DZ��C��ַ�^�m(x��)�O(ji��n)
SM2=0; //ȡ���O(ji��n) ��B(t��i)
SBUF=SLAVE; //�ı���ַ�l(f��)��
while(!TI=1);
TI=0;
while(!RI=1);
RI=0;
if(RB8=1)
{
SM2=1;
ES=1;
goto reti;
} //�Ǐ�(f��)λ��̖���֏�(f��)�O(ji��n)
a=SBUF; //��������
if(a==0X01)
{
if(rready=1)
SBUF=0X01; //���՜�(zh��n)��ðl(f��)���w
else
SBUF=0X00;
while(!TI=1);
TI=0;
while(!RI=1);
RI=0;
if(RB8==1)
{
SM2=1;
ES=1;
goto reti;
}
sre(); //���Ք�(sh��)��(j��)
}
else
{
if(a==0X02) //�ęC�����C�l(f��)�͔�(sh��)��(j��)
{
if(tready=1)
SBUF=0X02; //�l(f��)�͜�(zh��n)��ðl(f��)���w
else
SBUF=0X00;
while(!TI=1);
TI=0;
while(!RI=1);
RI=0;
if(RB8==1)
{
SM2=1;
ES=1;
goto reti;
}
str(); //�l(f��)�͔�(sh��)��(j��)
}
else
{
SBUF=0X80; //����Ƿ����l(f��)��B(t��i)
while(!TI=1);
TI=0;
SM2=1;
ES=1; //�֏�(f��)�O(ji��n)
}
}
reti;
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
void str(void) //�l(f��)�͔�(sh��)��(j��)�K
{
uchr p,i;
tready=0;
do
{
p=0; //����
for(i=0;i
{
SBUF=trbuf[i]; //�l(f��)��һ��(sh��)��(j��)
p+=trbuf[i];
while(!TI=1);
TI=0;
}
SBUF=p; //�l(f��)����
while(!TI=1);
TI=0;
while(!RI=1);
RI=0;
}while(SBUF!=0); //���C���ղ����_�����°l(f��)��
SM2=1;
ES=1;
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
void sre(void) //���Ք�(sh��)��(j��)�K
{
uchr p,i;
rready=0;
while(1)
{
p=0; //����
for(i=0;i
{
while(!RI=1);
RI=0;
rebuf[i]=SBUF; //���Ք�(sh��)��(j��)
p+=rebuf[i];
}
while(!RI=1);
RI=0;
if(SBUF==p)
{
SBUF=0X00;
break;
} //У����ͬ�l(f��)00
else
{
SBUF=0XFF; //У�ֵ��ͬ�l(f��)0FF�����½���
while(!TI=1);
TI=0;
}
}
SM2=1;
ES=1;
}
-----------------------------------------------------------------------------------------------------------------------
������51���ڵ�ͨӍ�ąf(xi��)�h��(n��i)�ݣ�Ҳ�����f�Ǵ���ͨӍ�f(xi��)�h�����cUart�Ⱦ�����ͬ�Ă�ݔ���|(zh��)���p���ݔ��ȫ�p����
��һƪ��C�Z���ַ���(sh��)�M���ַ���
��һƪ��C�Z���ַ���̎������(sh��)
�ߴa�P(gu��n)ע�҂�
���棺0755-82591176
�]�䣺vicky@yingtexin.net
��ַ�����������A�^(q��)���νֵ����δ��973�f�����S��(chu��ng)�I(y��)�@A��2��A08