�������gӭ�M(j��n)�������зf���¿Ƽ�����˾�ٷ��W(w��ng)վ��
N76E003�����ɂ�(g��)�߂�����(qi��ng)���Ԅ�(d��ng)��ַ�R(sh��)�e�͎��e(cu��)�`�z�y(c��)���ܵ�ȫ�p�����������ڃɂ�(g��)���ڵĿ���λ��һ�ӵģ����˅^(q��)�փɂ�(g��)���ڿ���λ������1�Ŀ���λ�ԡ�_1���Y(ji��)β������SCON_1��������Ԕ���Դ���0������
ÿ��(g��)���ڶ���һ�Nͬ������ģʽ��ģʽ0�����Nȫ�p������ģʽ��ģʽ1��2����3���@��ζ���հl(f��)����ͬ�r(sh��)�B�m(x��)�M(j��n)�������ڽ��Վ��н��վ�������ζ���ڽ��յ�ǰһ��(g��)��(sh��)��(j��)�ڱ��xȡ֮ǰ�����ھ��ܽ��յڶ���(g��)��(sh��)��(j��)�����պͰl(f��)�Ͷ��nj�(du��)SBUF�M(j��n)�в����L��(w��n)����(xi��)��SBUF��(sh��)��(j��)��ֱ�ӂ����l(f��)�ͼĴ��������xȡSBUF���L��(w��n)һ��(g��)���Ъ�(d��)��������ַ�Ľ��ռĴ��������ڹ���4�N����ģʽ���κ�һ�Nģʽ���κ��Բ���SBUF��ָ����_(k��i)ʼһ��ݔ��ע������ʹ�ô��ڹ���ǰ���������ù��_P0.7�� P0.6 (RXD �� TXD���_) ���� P0.2�� P1.6 (RXD_1 �� TXD_1)�������1��N76E003�ṩ���`��Ĺ��_�������Ɍ�����0��TXD��RXDͨ�^(gu��)UART0PX (AUXR1.2)����λ����
13.1 ģʽ 0
ģʽ0���c�ⲿ�O(sh��)���M(j��n)��ͬ��ͨ�ŵķ�ʽ����ԓģʽ�������Д�(sh��)��(j��)��RXD�_�M(j��n)���հl(f��)����TXD �_���ڮa(ch��n)����λ�r(sh��)����@�N��ʽ�������p������ʽ�M(j��n)��ͨ����ÿ�����ջ�l(f��)��8λ��(sh��)��(j��)����(sh��)��(j��)�����λ�����Ȱl(f��)�ͻ�������������O(sh��)�Þ�FSYS/12(SM2 (SCON.5) �� 0) �� FSYS/2 ��SM2 �� 1�����o(w��)Փ�l(f��)�ͻ���Ք�(sh��)��(j��)�����Еr(sh��)犌�һֱ��MCU�a(ch��n)������˴���ģʽ 0 �����C(j��)ģʽ���D13?1 �@ʾ����ģʽ0��ݔ�r(sh��)��D
��D��ʾ����(sh��)��(j��)���p��RXD���_�M(j��n)���հl(f��)��TXD���_�Á�(l��i)ݔ����λ�r(sh��)犡���������λ�r(sh��)犁�(l��i)һλλ����/�l(f��)�͔�(sh��)��(j��)�c��������ͨӍ����(sh��)��(j��)�����Ƴ������λ�_(k��i)ʼ�������ʵ���TXD����λ�r(sh��)��l�ʡ�
��SBUF�Č�(xi��)�딵(sh��)��(j��)����(hu��)�_(k��i)���l(f��)�����˕r(sh��)��λ�r(sh��)犆���(d��ng)��(sh��)��(j��)��RXD�_�����Ƴ���ֱ��8λ��(sh��)��(j��)��ݔ�������ݔ��(bi��o)־λTI (SCON.1) �� 1��ʾ 1 ��(g��)�ֹ�(ji��)��(sh��)��(j��)��ݔ�����
��(d��ng)REN (SCON.4)=1 �� RI(SCON.0)=0 �r(sh��)�����_(k��i)ʼ���Ք�(sh��)��(j��)��ԓ�l�����V���ڿ������Д�(sh��)��(j��)Ҫ��λ�M(j��n)�����@��(g��)�^(gu��)�̌����m(x��)��8λ��(sh��)��(j��)�����ꮅ��Ȼ�����(bi��o)־RI����1���Ñ���������RI�����|�l(f��)������һ�ֹ�(ji��)��(sh��)��(j��)��
13.2 ģʽ 1
ģʽ1�鮐��ȫ�p���Ĺ�����ʽ������ͨӍģʽͨ������PC�g���{(di��o)�ƽ��{(di��o)����������ƽӿ��gͨӍ��ģʽ1����10λ��(sh��)��(j��)ͨ�^(gu��)TXD�l(f��)����ͨ�^(gu��)RXD���ա�10λ��(sh��)��(j��)�M�����£���ʼλ��߉0����8λ��(sh��)��(j��)�����λ��ǰ����ֹͣλ��߉1�����������ɶ��r(sh��)��1�Q���� SMOD (PCON.7) �O(sh��)�Þ�1��ʹ�����ʼӱ�.�D13?2�鴮��ģʽ1�l(f��)�ͺͽ��յĕr(sh��)��D.
��SBUF��(xi��)�딵(sh��)��(j��)�_(k��i)ʼ��ݔ����ݔ�l(f��)����TXD���_�����������_(k��i)ʼλ���S����8λ��(sh��)��(j��)λ�������ֹͣλ��ֹͣλ���F(xi��n)����TI��SCON.1������1 ��ʾһ��(g��)�ֹ�(ji��)��ݔ��ɣ�����λ�Ă�ݔ�ٶ�ȡ�Q�ڲ�������
��(d��ng)�����ʰl(f��)����������REN(SCON.4) =1�r(sh��)��ϵ�y(t��ng)�����S�r(sh��)�_(k��i)ʼ���ղ�������(d��ng)RXD�_�ςɜy(c��)��1��0����׃�r(sh��)����(sh��)��(j��)���_(k��i)ʼ���ɘӲ�����(j��)�����ʵĕr(sh��)��l�ʽ�����ֹͣλ��횷���һ���ėl�������յ���(sh��)��(j��)�����b�d��SBUF��
1. RI (SCON.0) = 0
2. ҪôSM2 (SCON.5) = 0, Ҫô���յ�ֹͣλSTOP= 1��ͬ�r(sh��)SM2 = 1�ұ���ַ��Given������ϏV����ַ��Broadcast address��ƥ��r(sh��)��ԔҊ(ji��n) 13.7 ���C(j��)ͨӍ �� 13.8 �Ԅ�(d��ng)��ַ�R(sh��)�e��
��������l���M����SBUF�����d�����Ք�(sh��)��(j��)��RB8��SCON.2����ֹͣλ����RI������1������l�����M����RI���֞�0���](m��i)�Д�(sh��)��(j��)���d����ɽ����^(gu��)�̺������ڿ��������ȴ�RXD�_�ϳ��F(xi��n)��һ��(g��)1-0��ݔ���_(k��i)ʼ�µĔ�(sh��)��(j��)������
13.3 ģʽ 2
ģʽ2��ȫ�p������ͨ��, �cģʽ1��ͬ������ģʽ2��11λ�հl(f��)����(sh��)��(j��)����ʼλ��߉0����8λ��(sh��)��(j��)�����λ��ǰ������9λ��(sh��)��(j��)��TB8��RB8����ֹͣλ(߉1)�M������9λ����żУ�(y��n)λ����C(j��)ͨ�ŕr(sh��)�Á�(l��i)�^(q��)��?j��n)?sh��)��(j��)�͵�ַ����������ϵ�y(t��ng)�r(sh��)��l�ʵ�1/32 ��1/64���� SMODλ(PCON.7)��(l��i)���á��D13?3 ָʾ����ģʽ2�Ă�ݔ�r(sh��)����
��SBUF�Ќ�(xi��)�딵(sh��)��(j��)����(d��ng)TXD���_�l(f��)�ͣ��������_(k��i)ʼλ��Ȼ����8λ��(sh��)��(j��)��TB8��SCON.3���������ֹͣλ��ֹͣλ�l(f��)�ͺ�TI����λ��(bi��o)־��ݔ�����
��(d��ng)REN=1�r(sh��)�����ڿ��M(j��n)�н��ղ�����RXD�ϵ��½��ر�ʾ�����^(gu��)���_(k��i)ʼ����(sh��)��(j��)����(j��)�����ò������M(j��n)�вɘӺͽ��ա�ֹͣλ��횷���һ���ėl�������յ���(sh��)��(j��)�����b�d��SBUF��
1. RI (SCON.0) = 0,
2. ҪôSM2(SCON.5) = 0, Ҫô9thλ = 1ͬ�r(sh��) SM2 = 1�ұ���ַ��Given������ϏV����ַ��Broadcast address��ƥ����ԔҊ(ji��n) 13.7 ���C(j��)ͨӍ �� 13.8 �Ԅ�(d��ng)��ַ�R(sh��)�e��
��������l���M�����t��9λ��(sh��)��(j��)�M(j��n)��RB8(SCON.2)��8λ��(sh��)��(j��)�M(j��n)��SBUF����RI��λ����t��(sh��)��(j��)������(hu��)�b�d����RI���֞�0����ɽ����^(gu��)�̺������ڿ������ȴ�RXD�_�ϵ���һ��(g��)1-0��׃���_(k��i)ʼ�µĔ�(sh��)��(j��)������
13.4 ģʽ 3
����������ģʽ 3�cģʽ 2��ͬ��ģʽ3���ö��r(sh��)��1����������鲨���ʕr(sh��)����D13?3 ģʽ3�Ă�ݔ�r(sh��)�����cģʽ2�](m��i)�в�ͬ��
13.5 ������
���ڵIJ�ͬģʽ�IJ����ʕr(sh��)�Դ���ٶ�����ȫ��ͬ����ԔҊ(ji��n)�� 13�C3. �����O(sh��)����ͬ�IJ�������
��ģʽ1��ģʽ3������0�IJ����ʕr(sh��)�Դ��ͨ�^(gu��)BRCK (T3CON.5)�x�r(sh��)��1�r(sh��)��3����(du��)�ڴ���1��ֻ�в��ö��r(sh��)��3����Ψһ�ĕr(sh��)�Դ��
��(d��ng)���ö��r(sh��)��1���鲨���ʰl(f��)��������Ҫ�P(gu��n)�]���r(sh��)��1�Дࡣ���r(sh��)��1�����Þ�Ӌ(j��)��(sh��)�����Ƕ��r(sh��)�������N����ģʽ�����������͑�(y��ng)���У���(hu��)���Þ鶨�r(sh��)���������Ԅ�(d��ng)���b�dģʽ�����r(sh��)��ģʽ2����������ö��r(sh��)��3���鲨���ʰl(f��)������ͬ��Ҳ��Ҫ�P(gu��n)�]���r(sh��)��3�Дࡣ
ģʽ1��ģʽ3�IJ������ǿ�׃����ȡ�Q�ڶ��r(sh��)��1��2��003оƬ����������ʣ������f(shu��)���r(sh��)��1ÿ���һ�������ڰl(f��)��һ�Δ�(sh��)��(j��)����ô�҂�?c��)�ôȥ�?j��)���@�ɂ�(g��)ģʽ�IJ������O(sh��)�Õr(sh��)���P(gu��n)�ļĴ�����ֵ���������ù�ʽȥӋ(j��)����
13.6 ���e(cu��)�`�z�y(c��)
���e(cu��)�`�z�y(c��)���ڮ���ģʽ (ģʽ 1, 2 �� 3)����(d��ng)���ڿ����ɔ_��(zh��ng)�Z����(d��o)�](m��i)�Йz�y(c��)����Ч��ֹͣλ�r(sh��)�����l(f��)�����e(cu��)�`�����ڿ��ԙz�y(c��)���e(cu��)�`����ͨ�^(gu��)ܛ����ʾ���e(cu��)��
FE�鎬�e(cu��)�`��(bi��o)־��λ��SCON��7λ���@��(g��)λ������������SM0 ����(d��ng)SMOD0 (PCON.6)��1�r(sh��)�����e(cu��)�`�z�y(c��)���ܴ��_(k��i)��������FE��(bi��o)־��SM0��FE�䌍(sh��)�����(d��)���Ę�(bi��o)־λ��
��(d��ng)���e(cu��)�`�l(f��)���r(sh��)��F(xi��n)E��(bi��o)־��Ӳ����λ�������Ҫ��F(xi��n)E���ڴ����Д�����Йz�y(c��)��ע���ڌ�(du��)FE��(bi��o)־λ�M(j��n)���x��(xi��)�r(sh��)��ͬ�r(sh��)SMOD0��횞�1�����FE����λ����ô�´μ�ʹ���յ������_��(sh��)��(j��)��Ҳ����(hu��)�����������(du��)ԓλ����������ܛ����(l��i)�����
13.7 ���C(j��)ͨӍ
N76E003����֧�ֶ��C(j��)ͨӍ����һ��(g��)���C(j��)��master device�������(g��)�ęC(j��)��slave device���l(f��)�Ͷ���������Ϣ����ͬһ���о���ʹ��ԓ�����^(gu��)���в���Ҫ�Д������ęC(j��)�O(sh��)�乤����ԓ����ֻ����ģʽ2��ģʽ3���M(j��n)�����Ñ��O(sh��)��SM2(SCON.5)��1���_(k��i)�@��(g��)�������Ա㮔(d��ng)һ��(g��)��(sh��)��(j��)�����պ�����(d��ng)?sh��)?λ��1�r(sh��)�������Д����a(ch��n)����ģʽ2�£���9λ��ֹͣλ������(d��ng)SM2��1�r(sh��)�������9λ��0������(hu��)�l(f��)���Дࡣ��ԓ��r������9λ�ܺ�(ji��n)�εİяęC(j��)��ַ�͔�(sh��)��(j��)���_(k��i)��
��(d��ng)���C(j��)��Ҫ�����(g��)�ęC(j��)�е�һ��(g��)�l(f��)�͔�(sh��)��(j��)�r(sh��)��������Ҫ�l(f��)��Ŀ��(bi��o)�ęC(j��)�ĵ�ַ��ע����ַ�ֹ�(ji��)�c��(sh��)��(j��)�ֹ�(ji��)�Dz�ͬ�ģ��ڵ�ַ�ֹ�(ji��)�У���9λ��1������(sh��)��(j��)�ֹ�(ji��)�е�9λ��0����ַ�ֹ�(ji��)��(hu��)�|�l(f��)���ЏęC(j��)����ÿ�_(t��i)�ęC(j��)�z����յ���
��ַ�Ƿ��c����ƥ�䡣��ַƥ��ďęC(j��)�����SM2����(zh��n)����Ք�(sh��)��(j��)��δ����ַ���ďęC(j��)��SM2 ��횱������Ķ�ϵ�y(t��ng)��(hu��)���m(x��)������ͬ�r(sh��)���Խ��Ք�(sh��)��(j��)��.
���ö��C(j��)ͨ�Ų��E���£�
1. �O(sh��)�������O(sh��)��(���C(j��)�c�ęC(j��))�鴮��ģʽ2��3��
2. ���ЏęC(j��) SM2 λ�Þ�1��
3. ���C(j��)��ݔ�f(xi��)�h��
�C ��һ��(g��)�ֹ�(ji��)����ַ��Ŀ��(bi��o)�ęC(j��)��ַ (��9λ = 1)
�C ��һ��(g��)�ֹ�(ji��)����(sh��)��(j��)�� (��9λ = 0)��
4. ��(d��ng)Ŀ��(bi��o)�ęC(j��)���յ���һ��(g��)�ֹ�(ji��), ��?y��n)�?λ��(sh��)��(j��)��1���ЏęC(j��)���Д���Ŀ��(bi��o)�ęC(j��)���^������ַ������SM2 λ�ȴ����պ���Ĕ�(sh��)��(j��)�������ęC(j��)�t�^�m(x��)�����\(y��n)����
5. ���յ����Д�(sh��)��(j��)������ SM2 �� 1 �ȴ���һ��ַ��
SM2 ��ģʽ 0 �o(w��)Ч���� SM2 �� 1��ģʽ1�����ڙz�y(c��)��Ч��ֹͣλ��ͬ�r(sh��)������(hu��)�a(ch��n)���Д������Чֹͣλ�ѽ�(j��ng)������
13.8 �Ԅ�(d��ng)��ַ�R(sh��)�e
�Ԅ�(d��ng)��ַ�R(sh��)�e��������˶��C(j��)ͨӍ���ܣ����SUARTͨ�^(gu��)Ӳ�����^����(l��i)�R(sh��)�e�e�ĵ�ַ��Ϣ�ڽ��յı���������ԓ���ܿ��Թ�(ji��)ʡܛ���R(sh��)�e��ַ����ռ�õij�����g���H��(d��ng)�����R(sh��)�e��������ַ�r(sh��)����������λRIλ��Ո(q��ng)���Д�����(d��ng)���C(j��)ͨ������ʹ�ܕr(sh��)��SM2��λ������ʹ���Ԅ�(d��ng)��ַ�R(sh��)�e��
�����Ҫ���Ñ�������ģʽ1��ʹ���Ԅ�(d��ng)��ַ�R(sh��)�e���������@�N��������ֹͣλȡ���ھ�λ�Ĕ�(sh��)��(j��)λ���H��(d��ng)��������Ď���ַ�c������ַƥ�����Ч��ֹͣλ�r(sh��)��RI��λ��
ʹ���Ԅ�(d��ng)��ַ�R(sh��)�e���������Sһ��(g��)���C(j��)ͨ�^(gu��)�ęC(j��)��ַ�x�����cһ��(g��)��ׂ�(g��)�ęC(j��)ͨ�������ЏęC(j��)����ͨ�^(gu��)���V������ַ(li��n)ϵ���Ѓɂ�(g��)����ܼĴ������ڶ��x�ęC(j��)��ַ SADDR�͏ęC(j��)��ַ�ڴaSADEN�� SADEN ���ڶ��xSADDR����Щλ��������Щλ�����P(gu��n)��. SADEN�ڴa�����cSADDR�ԡ�߉�c���ķ�ʽ�Ԅ�(chu��ng)��ÿ��(g��)�ęC(j��)�ġ�Given�� ��ַ��ʹ�� ��Given����ַ���S���ęC(j��)���R(sh��)�e��
���з��������f(shu��)��ԓ���ܵ��`�(y��ng)��
���� 1, �ęC(j��) 0��
SADDR = 11000000b
SADEN = 11111101b
Given = 110000X0b
���� 2, �ęC(j��) 1:
SADDR = 11000000b
SADEN = 11111110b
Given = 1100000Xb
�������������SADDR����ͬ����SADEN�Ĕ�(sh��)��(j��)���څ^(q��)�փɂ�(g��)�ęC(j��)���ęC(j��)0Ҫ��λ0�顱 ��������λ1���ęC(j��)1Ҫ��λ1�顱 ����λ0��������һ��(g��)�ęC(j��)0Ψһ�ĵ�ַ11000010B�����ڏęC(j��)1Ҫ��λ1��0��һ��(g��)�ęC(j��)1Ψһ�ĵ�ַ����1λ11000001b���ų��ęC(j��)0���@�ɂ�(g��)�ęC(j��)�����x����ͬһ�r(sh��)�g����ַλ0 = 0���ęC(j��)0���͵�1λ= 0���ęC(j��)1���������ʹ�ÏV����ַ(Boadcast address) 11000000b�Ϳ���ͬ�r(sh��)��ַ��
����(f��)�s��(y��ng)�ÿ������ų��ęC(j��)0֮�����x��ęC(j��)1��2��
���� 1, �ęC(j��) 0:
SADDR = 11000000b
SADEN = 11111001b
Given = 11000XX0b
���� 2, �ęC(j��) 1:
SADDR = 11100000b
SADEN = 11111010b
Given = 11100X0Xb
���� 3, �ęC(j��) 2:
SADDR = 11000000b
SADEN = 11111100b
Given = 110000XXb
���������������3��(g��)�ęC(j��)�ķքe���ڵ�ַ�ĵ�3λ���ęC(j��)0Ҫ��λ0 = 0��������11100110b��Q���ęC(j��)1Ҫ��λ1= 0��������11100101b�R(sh��)�e���ęC(j��)2Ҫ��λ2= 0���䪚(d��)���ĵ�ַ��11100011b��Ҫ�x��ęC(j��)0��1��ȥ���ęC(j��)2����ʹ�õ�ַ11100100b����?y��n)����DZ�Ҫ�ĵ?λ= 1��(l��i)�ų��ęC(j��)2��
ÿ��(g��)�ęC(j��)�ġ��V������ַ��Ӌ(j��)����ͨ�^(gu��)߉��SADDR��SADEN���Y(ji��)���е���λ��ҕ�顰�o(w��)�P(gu��n)��λ�����磺
SADDR = 01010110b
SADEN = 11111100b
Broadcast = 1111111Xb
ʹ�á��o(w��)�P(gu��n)��λ���ڏV��ģʽ�����ṩ���`��đ�(y��ng)�á����^(gu��)�ڴ֑�(y��ng)�×l�������V����ַȫ��ʹ��FFH��
��(f��)λ����SADDR��SADEN��ʼ����00H���@����(du��)�����С��o(w��)�P(gu��n)����ַ�a(ch��n)��һ��(g��)��Given����ַ���Լ�һ��(g��)���V������ַ��(du��)��(y��ng)����XXXXXXXXb��ַ�����С��o(w��)�P(gu��n)��λ�����@����Ч�ؽ�ֹ���Ԅ�(d��ng)��ַģʽ�����S���������֘�(bi��o)��(zh��n)����ģʽ����ʹ���@��(g��)���ܡ�
N76E003��������(qi��ng)��51��(n��i)�ˆ�Ƭ�C(j��)��һ���@�N�����ṩ��(ji��n)�εĴ���UARTʹ�õġ�
��ô�҂��ȿ��@��(g��)��Ƭ�C(j��)һ���ׂ�(g��)������
�փ�(c��)���ᵽ��N76E003�����ɂ�(g��)�߂�����(qi��ng)���Ԅ�(d��ng)��ַ�R(sh��)�e�͎��e(cu��)�`�z�y(c��)���ܵ�ȫ�p�����ڡ�Ҳ����2��(g��)�������քe�д���0�ʹ���1.
�҂�Ҳ���ԏ��փ�(c��)�l(f��)�F(xi��n)ÿ��(g��)���ھ߂�4�Nģʽ��Ҋ(ji��n)�±�
�ٷ����ṩ�����́�(l��i)�����@�ɂ�(g��)������ȫ������õ�ģʽ1
����0����ʹ�ö��r(sh��)��1���߶��r(sh��)��3�a(ch��n)�������������ṩ�ˌ�(du��)��(y��ng)���հl(f��)����(sh��)
����1����ʹ�ö��r(sh��)��3�a(ch��n)�������������ṩ�ˌ�(du��)��(y��ng)���հl(f��)����(sh��)��
�����ϴ��Ҳ�ò�������ģʽ�ġ���Ҏ(gu��)�đ�(y��ng)���������������߀�](m��i)�����^(gu��)���ڵ�����ģʽ��
�����Ҫ�����ԅ����@��(g��)��(k��)����(sh��)�M(j��n)�Ќ�(du��)��(y��ng)�ļĴ�������
�P(gu��n)�ڲ����ʣ����ڶ��r(sh��)���IJ�����������
#include "N76E003.h" #include "Common.h" #include "Delay.h" #include "SFR_Macro.h" #include "Function_define.h" /****************************************************************************** * FUNCTION_PURPOSE: Serial interrupt, echo received data. * FUNCTION_INPUTS : P0.7(RXD) serial input * FUNCTION_OUTPUTS: P0.6(TXD) serial output * Following setting in Common.c ******************************************************************************/ #if 0 //void InitialUART0_Timer1(UINT32 u32Baudrate) //T1M = 1, SMOD = 1 //{ // P06_Quasi_Mode; // P07_Quasi_Mode; // // SCON = 0x52; //UART0 Mode1,REN=1,TI=1 // TMOD |= 0x20; //Timer1 Mode1 // // set_SMOD; //UART0 Double Rate Enable // set_T1M; // clr_BRCK; //Serial port 0 baud rate clock source = Timer1 // //#ifdef FOSC_160000 // TH1 = 256 - (1000000/u32Baudrate+1); /*16 MHz */ //#endif // set_TR1; //} ////--------------------------------------------------------------- //void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator //{ // P06_Quasi_Mode; // P07_Quasi_Mode; // // SCON = 0x52; //UART0 Mode1,REN=1,TI=1 // set_SMOD; //UART0 Double Rate Enable // T3CON &= 0xF8; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1) // set_BRCK; //UART0 baud rate clock source = Timer3 //#ifdef FOSC_160000 // RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ // RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ //#endif // set_TR3; //Trigger Timer3 //} #endif /******************************************************************************* * FUNCTION_PURPOSE: Main function ******************************************************************************/ void main (void) { #if 0 InitialUART0_Timer1(9600); //UART0 Baudrate initial,T1M=0,SMOD=0 while(1) Send_Data_To_UART0(0x55); #else InitialUART0_Timer3(115200); while(1) Send_Data_To_UART0(0x55); #endif }
//void InitialUART0_Timer1(UINT32 u32Baudrate) //T1M = 1, SMOD = 1 //{ // P06_Quasi_Mode; // P07_Quasi_Mode; // // SCON = 0x52; //UART0 Mode1,REN=1,TI=1 // TMOD |= 0x20; //Timer1 Mode1 // // set_SMOD; //UART0 Double Rate Enable // set_T1M; // clr_BRCK; //Serial port 0 baud rate clock source = Timer1 // //#ifdef FOSC_160000 // TH1 = 256 - (1000000/u32Baudrate+1); /*16 MHz */ //#endif // set_TR1; //}
SCON = 0x52; //01010010 SM0=0,SM1=1����ģʽһ��REN=1,���_(k��i)����0��ģʽ1��2��3ģʽ�µĽ��չ��ܡ�TI=1���ڰl(f��)���Д���(bi��o)־λ���ڰl(f��)�͵���(sh��)��(j��)���һλ����Ӳ����λ����(d��ng)����0�Д�ʹ��������(zh��)���Д����(w��)����ԓλ�����ܛ����(l��i)�����
TMOD |= 0x20; //Timer1 Mode2
set_SMOD;
#define set_SMOD PCON |= SET_BIT7
#define SET_BIT7 0x80
#define set_T1M CKCON |= SET_BIT4
#define set_BRCK T3CON |= SET_BIT5
#ifdef FOSC_160000
TH1 = 256 - (1000000/u32Baudrate+1); /*16 MHz */
#endif
#ifdef FOSC_166000
TH1 = 256 - (1037500/u32Baudrate); /*16.6 MHz */
#endif
set_TR1;
set_TI; //For printf function must setting TI = 1
}
��ʽ1�IJ�����= �� ��2^smod /32��*T1����������� (��2^smod /32��*16000000)/(256-x)
ͨ�����ǹ̶�����һ�㶼�Ǹ���(j��)��ʹ�õIJ����ʁ�(l��i)�r(sh��)����ֵ��
TH1 = 256 - (1000000/u32Baudrate+1); 256-TH1-1=1000000/u32Baudrate u32Baudrate=1000000/(256-TH1-1)
set_TR1;
set_TI; //For printf function must setting TI = 1
void Send_Data_To_UART0 (UINT8 c) { TI = 0; SBUF = c; while(TI==0); }
�����@��(g��)��һ��(g��)������ģʽ1��С����
#include <stdio.h> #include "N76E003.h" #include "Common.h" #include "Delay.h" #include "SFR_Macro.h" #include "Function_Define.h" /****************************************************************************** * FUNCTION_PURPOSE: Serial interrupt, echo received data. * FUNCTION_INPUTS : P0.7(RXD) serial input * FUNCTION_OUTPUTS: P0.6(TXD) serial output * Following setting in Common.c ******************************************************************************/ #if 0 //void InitialUART0_Timer1(UINT32 u32Baudrate) //T1M = 1, SMOD = 1 //{ // P06_Quasi_Mode; // P07_Quasi_Mode; // // SCON = 0x52; //UART0 Mode1,REN=1,TI=1 // TMOD |= 0x20; //Timer1 Mode1 // // set_SMOD; //UART0 Double Rate Enable // set_T1M; // clr_BRCK; //Serial port 0 baud rate clock source = Timer1 // //#ifdef FOSC_160000 // TH1 = 256 - (1000000/u32Baudrate+1); /*16 MHz */ //#endif // set_TR1; //} ////--------------------------------------------------------------- //void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator //{ // P06_Quasi_Mode; // P07_Quasi_Mode; // // SCON = 0x52; //UART0 Mode1,REN=1,TI=1 // set_SMOD; //UART0 Double Rate Enable // T3CON &= 0xF8; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1) // set_BRCK; //UART0 baud rate clock source = Timer3 //#ifdef FOSC_160000 // RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ // RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ //#endif // set_TR3; //Trigger Timer3 //} #endif void DelayTime(UINT32 u32CNT) { UINT32 i; i=u32CNT; while(i--); } /******************************************************************************* * FUNCTION_PURPOSE: Main function ******************************************************************************/ void main (void) { #if 1 InitialUART0_Timer1(9600); //UART0 Baudrate from Timer1 while(1) { Send_Data_To_UART0(0x33); Timer0_Delay1ms(500);//������500mS } #else InitialUART0_Timer3(115200); //UART0 Baudrate from Timer3 while(1) { Send_Data_To_UART0(0x55); Timer0_Delay1ms(500); //������500mS } #endif }
����0���x���r(sh��)��3�r(sh��)��1���҂�?c��)ٿ�һ�£������?ģʽ��
ģʽ2��ȫ�p������ͨ��, ģʽ2��11λ�հl(f��)����(sh��)��(j��)����ʼλ��߉0����8λ��(sh��)��(j��)�����λ��ǰ������9λ��(sh��)��(j��)��TB8��RB8����ֹͣλ(߉1)�M������9λ����żУ�(y��n)λ����C(j��)ͨ�ŕr(sh��)�Á�(l��i)�^(q��)��?j��n)?sh��)��(j��)�͵�ַ����������ϵ�y(t��ng)�r(sh��)��l�ʵ�1/32 ��1/64���� SMODλ(PCON.7)��(l��i)���á��D13?3 ָʾ����ģʽ2�Ă�ݔ�r(sh��)����
������ģʽ�� Ҫ���ö��r(sh��)��1���r(sh��)���
#include "N76E003.h" #include "SFR_Macro.h" #include "Common.h" #include "Delay.h" #include "Function_define.h" #define BUFFER_SIZE 16 UINT8 UART_BUFFER[BUFFER_SIZE],temp; UINT16 u16CNT=0,u16CNT1=0; bit riflag; /** * FUNCTION_PURPOSE: serial interrupt, echo received data. * FUNCTION_INPUTS: P0.7(RXD) serial input * FUNCTION_OUTPUTS: P0.6(TXD) serial output */ void SerialPort0_ISR(void) interrupt 4 { if (RI==1) { /* if reception occur */ clr_RI; /* clear reception flag for next reception */ UART_BUFFER[u16CNT] = SBUF; u16CNT ++; riflag =1; } if(TI==1) { clr_TI; /* if emission occur */ } } /************************************************************************************************************ * Main function ************************************************************************************************************/ void main (void) { P12_PushPull_Mode; P06_Quasi_Mode; P07_Quasi_Mode; SCON = 0xD0; // Special setting the mode 3 and TMOD |= 0x20; //Timer1 Mode1 set_SMOD; //UART0 Double Rate Enable set_T1M; //sys clk clr_BRCK; //Serial port 0 baud rate clock source = Timer1 TH1 = 256 - (1000000/115200+1); /*16 MHz */ set_TR1; set_RB8; //This bit is for setting the stop bit 2 high/low status, clr_TI; set_ES; //enable UART interrupt set_EA; //enable global interrupt while(1) { if (riflag) { P12 = ~P12; //In debug mode check UART_BUFFER[u16CNT] to check receive data riflag = 0; } } }
����(l��i)���Ǵ���һ����(du��)�ڴ���1��ֻ�в��ö��r(sh��)��3����Ψһ�ĕr(sh��)�Դ��
#include "N76E003.h" #include "Common.h" #include "Delay.h" #include "SFR_Macro.h" #include "Function_define.h" #define BUFFER_SIZE 16 UINT8 UART_BUFFER[BUFFER_SIZE],temp; UINT16 u16CNT=0,u16CNT1=0; bit riflag; /****************************************************************************** * FUNCTION_PURPOSE: Serial port 1 interrupt, echo received data. * FUNCTION_INPUTS : P0.2(RXD) serial input * FUNCTION_OUTPUTS: P1.6(TXD) serial output * Following setting in Common.c ******************************************************************************/ #if 0 //void InitialUART1_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator //{ // P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit // P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit // // SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1 // T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1 // clr_BRCK; // //#ifdef FOSC_160000 // RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ // RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ //#endif //#ifdef FOSC_166000 // RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ // RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ //#endif // set_TR3; //Trigger Timer3 //} #endif void SerialPort1_ISR(void) interrupt 15 { if (RI_1==1) { /* if reception occur */ clr_RI_1; /* clear reception flag for next reception */ UART_BUFFER[u16CNT] = SBUF_1; u16CNT ++; riflag =1; } if(TI_1==1) { clr_TI_1; /* if emission occur */ } } /**************************************************************************************************************** * FUNCTION_PURPOSE: Main function !!! N76E003 UART1 pin also occupied by debug pin, please remove Nu-link or not in debug mode to test UART1 function. External UART1 connect also disturb debug download ***************************************************************************************************************/ void main (void) { P12_PushPull_Mode; // For I/O toggle display #if 0 //for Simple use UART1 transmit out InitialUART1_Timer3(115200); while(1) Send_Data_To_UART1(0x55); #else // For interrupt setting check receive InitialUART1_Timer3(115200); set_ES_1; //For interrupt enable set_EA; while(1) { if (riflag) { P12 = ~ P12; //Receive each byte P12 toggle, never work under debug mode riflag = 0; } } #endif }
void InitialUART1_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator { P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1 T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1 clr_BRCK; #ifdef FOSC_160000 RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ #endif #ifdef FOSC_166000 RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ #endif set_TR3; //Trigger Timer3 }
SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1
T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1
#ifdef FOSC_160000
RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
#endif
#ifdef FOSC_166000
RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */
RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */
#endif
set_TR3; //Trigger Timer3
set_ES_1; //For interrupt enable

set_EA;
����1ֻ���ö��r(sh��)��3������0ֻ�������r(sh��)��1��3�����Ǵ���0ģʽ��ֻ���ö��r(sh��)��1������������ģʽ����
߀��һ��(g��)���^��Ҫ�Ć�(w��n)�}������ICP��䛵ĕr(sh��)�����c����һ���غϵ������������_��(f��)�õ��P(gu��n)ϵ�����Դ��ڹ��ܰl(f��)�����Õr(sh��)���͕�(hu��)���F(xi��n)��䛲��M(j��n)ȥ����r���@�r(sh��)ֻ��Ҫ�����հl(f��)���˔�(sh��)��(j��)���ܟ�䛳�������
�ߴa�P(gu��n)ע�҂�
���棺0755-82591176
�]�䣺vicky@yingtexin.net
��ַ�����������A�^(q��)���νֵ����δ��973�f(w��n)����(r��n)�S��(chu��ng)�I(y��)�@A��2��A08