国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

��ã��gӭ���������зf���¿Ƽ����޹�˾��
�Z��
��ǰλ�ã���� >> ���g(sh��)���� >> ��Ƭ�C���T >> Մ?w��)���Ƭ�C�㱼�ij�����

Մ?w��)���Ƭ�C�㱼�ij�����

�P(gu��n)�I�֣���Ƭ�C ���ߣ� ��Դ: �l(f��)���r�g��2019-07-31  �g�[��22

 ���W��Ƭ�C�r�������m�Y(ji��)�������ģ�K���ܵđ�(y��ng)�����紮��(232��485)�����N����IC�Ŀ���,늙C����PWM���Д���(y��ng)�������r����(y��ng)�����˙C���摪(y��ng)����CAN������. �@��һ���W���^���б�����A�Σ��ǻ��������ܑc�����څ�������O(sh��)Ӌ��ِِǰ��Ӗ�r��MCU�܇��Ŀ��ƶ�Ӗ���ĺ���������(j��ng)�^�@���A�κ󣬺�����|��ͬ��MCU�͕��l(f��)�F(xi��n)������ͬС�������и��ă�(y��u)�ݶ������W�κ�һ�N�µ�MCU�����������ְ���һЩ���s��̎���������Ҍ�MCU�ľ��̿��ƕ�����һ���߶ȸśr——���nj����N����M�п���(����nj����s�㷨���\��͕�

��DSP��)��������cMCU��ͨ�ŷ�ʽһ��Ҳ�͎׷N�r��IIC,SPI,intel8080,M6800���@�ӿ���MCU�܇��ľ��̾���һ���ܺ��εĖ|������

Ȼ���@ֻ��Ƕ��ʽ�_�l(f��)�е�һ�cƤë�������ڽ��|�^��NMCU,���|�^���s�O(sh��)ӋҪ�������^����ϵ�y(t��ng)�ȵȺ����҂��ڻص���Ƭ�C����C�_�l(f��)�r���Ͳ�֪���X�ľ͕����]�����������O(sh��)Ӌ�ļܘ�(g��u)���};һ���õij���ܘ�(g��u)����һ���н�(j��ng)�Ĺ��̎���һ�����W�ߵķ�ˮ�X��

�������Ҍ���Ƭ�C�������Լ��_�l(f��)��һЩ���ò��ֵ��J�R���Y(ji��)��

�κΌ��r�gҪ����̵��������҂��Ĕ��ˣ��ڱ�Ҫ�ĕr���҂�ֻ������Ӳ���ɱ���������;������Ҫ8����(sh��)�a�܁��@ʾ���҂��ڛ]�����P(gu��n)��Ӳ��֧�ֵĕr������MCU�ԄӑB(t��i)����ķ�ʽ��ʹ�乤������;���ӑB(t��i)���茢�����ٵ���ֹ��MCU̎����������������MCUؓ�����صĈ������ҕ��x���x��һ�����max8279���ic����Q�@�����_;

Ȼ���c�ҵ����������S�಻�nj��r�gҪ����̵����飺

�����I�P�Ē������˂��Ó��I�P�����������޵����҂��o�茍�r�������I�P����������ÿ���ʮms��ȥ����һ��;Ȼ���@����ʮms���g�����҂���MCU߀��������S�������;

��Ƭ�C�mȻ����C���������������F(xi��n)������Ҫ�Q�����҂�����ܳ�����ϵ�y(t��ng)���ˑB(t��i)——���΄�(w��)����;

����һ�����õ���r��4���΄�(w��)��

1 �I�P����;

2 led��(sh��)�a���@ʾ;

3 ���ڔ�(sh��)��(j��)��Ҫ���ܺ�̎��;

4 ������Ҫ�l(f��)�͔�(sh��)��(j��);

��΁혋(g��u)���@����Ƭ�C�ij���?q��)����҂������c;

�x���r�����ҕ����I�P�����ò�ԃ�ķ�ʽ������ѭ�h(hu��n)���������ڽ��Ք�(sh��)��(j��)���Д������Д����(w��)����(sh��)�нM������(y��ng)�Ď���ʽ����λ����(y��ng)�Ę�־λ����������(sh��)��ѭ�h(hu��n)���M�Д�(sh��)��(j��)��̎�������ڰl(f��)�͔�(sh��)��(j��)�Լ�l(f��)ed���@ʾҲ������ѭ�h(hu��n)��;

�@������������Ԙ�־׃����ͨ�ŷ�ʽ���໥��ϵ�����ѭ�h(hu��n)�ͺ��_�Д��Ј�(zh��)��;

Ȼ�����ָ���䲻��֮̎��

ÿ���΄�(w��)�ĕr�gƬ�����^�L���@�����³���Č��r���ܲ���������@�ӵķ�ʽ�ڶ�ӎׂ��΄�(w��)��ʹ��һ��ѭ�h(hu��n)�ĕr�g�^�L�������I�P���茢�ܲ��`����������Ҫ����һ�����õ�ͨ�þ���ģ�����҂�������k������ȥÿ���΄�(w��)���M�r�g�IJ����Լ���ÿ���΄�(w��)�ٴηֽ�;�������Մÿ���΄�(w��)�ľ��w��ʩ��

1 �I�P����

�I�P�����dž�Ƭ�C�ij��ú���(sh��)������ָ�����õ��I�P�����������������Kϵ�y(t��ng)���r���ܵĵط�;

������֪��һ���I����֮��IJ������@�ӵ�(�ٶ�����Ч)��

�����I���º�����(sh��)��(j��)���ϵ���̖���F(xi��n)һ�Εr�g�Ķ�����Ȼ���ͣ�Ȼ�󮔰��Iጷŕr����̖����һ�Εr�g��׃������Ȼ���ڔ�(sh��)��(j��)����ͻ��ߞ�ߵ��^���������п��ܳ��F(xi��n)һЩ��խ�ĸɔ_��̖��

unsigned char kbscan(void)

{

unsigned char sccode,recode;

P2=0xf8;

if ((P2&0xf8)!=0xf8)

{

delay(100); //�ӕr20msȥ��--------�@��̫�M�r���������

if((P2&0xf8)!=0xf8)

{

sccode=0xfe;

while((sccode&0x08)!=0)

{

P2=sccode;

if ((P2&0xf8)!=0xf8)

break;

sccode=(sccode<<1)|0x01;

}

recode=(P2&0xf8)|0x0f;

return(sccode&recode);

}

}

return (KEY_NONE);

}

�I�P��������Ҫܛ��ȥ�������@�]�Р��h��Ȼ��ԓ����(sh��)����ܛ���ӕr��ȥ��(ms���e���ӕr)���@��һ���S��ϵ�y(t��ng)���r���ܵ�һ������M;

һ��߀��һ���Дఴ�IጷŵĴ��a��

While( kbscan() != KEY_NONE)

; //��ѭ�h(hu��n)�ȴ�

�@�Ӻ������������I�P����һֱ�������@����������ϵ�y(t��ng)�������΄�(w��)Ҳ���܈�(zh��)�����@���ǂ��܇��ص�bug��

���˕��@���M��̎����

While(kbsan() != KEY_NONE )

{

Delay(10);

If(Num++ > 10)

Break;

}

����һ���Õr�g��(n��i)������I�Pһֱ��������������Ч�I̎�����@���mȻ����������ϵ�y(t��ng)�����΄�(w��)�����\������Ҳ�ܴ�̶�����������ϵ�y(t��ng)�Č��r����������������ӕr����(sh��);

�҂��ÃɷN��Ч�ķ�������Q�ˆ��}��

1 �ڰ��I���ܱ��^���ε���r�����҂�?n��i)�Ȼ�������kbscan()����(sh��)�M�В�����ֻ�ǰ�����ȥ���õ�ܛ���ӕrȥ������ȥ���Լ��Дఴ�I��ጷ���һ������(sh��)��̎����������ܛ���ӕr�������ö��r����Ӌ�r(��һ���Ӌ�rҲ��)�����;���a����

void ClearKeyFlag(void)

{

KeyDebounceFlg = 0;

KeyReleaseFlg = 0;

}

void ScanKey(void)

{

++KeyDebounceCnt;//ȥ��Ӌ�r(�@��Ӌ�rҲ���Է��ں��_���r��Ӌ�r����(sh��)��̎��)

KeyCode = kbscan();

if (KeyCode != KEY_NONE)

{

if (KeyDebounceFlg)//�M��ȥ����B(t��i)�Ę�־λ

{

if (KeyDebounceCnt > DEBOUNCE_TIME)//������ȥ��Ҏ(gu��)���ĕr�g

{

if (KeyCode == KeyOldCode)//���I��Ȼ�������t�����Iֵ

{

KeyDebounceFlg = 0;

KeyReleaseFlg = 1;//ጷŘ�־

return; //Here exit with keycode

}

ClearKeyFlag(); //KeyCode != KeyOldCode��ֻ�Ƕ��Ӷ���

}

}else{

if (KeyReleaseFlg == 0)

{

KeyOldCode = KeyCode;

KeyDebounceFlg = 1;

KeyDebounceCnt = 0;

}else{

if (KeyCode != KeyOldCode)

ClearKeyFlag();

}

}

}else{

ClearKeyFlag();//�]�а��I�t�����־

}

KeyCode = KEY_NONE;

}

�ڰ��I��r�^���s����r�������L���I���M���I���B�I��һЩ���s���ܵİ��I�r�����҂����A�����à�B(t��i)�C�팍�F(xi��n)�I�P�Ē���;

//avr ��Ƭ�C ��4*3�����B(t��i)�C���F(xi��n)

char read_keyboard_FUN2()

{

static char key_state = 0, key_value, key_line,key_time;

char key_return = No_key,i;

switch (key_state)

{

case 0: //����Ġ�B(t��i)���M��3*4���I�P����

key_line = 0b00001000;

for (i=1; i<=4; i++) // �����I�P

{

PORTD = ~key_line; // ݔ���о��ƽ

PORTD = ~key_line; // �����2��!!!(ע1)

key_value = Key_mask & PIND; // �x���ƽ

if (key_value == Key_mask)

key_line <<= 1; // �]��I���^�m(x��)����

else

{

key_state++; // �а��I��ֹͣ����

break; // �D(zhu��n)�����_�J��B(t��i)

}

}

break;

case 1: //�ˠ�B(t��i)���Дఴ�I�Dz��Ƕ��������

if (key_value == (Key_mask & PIND)) // �ٴ��x���ƽ��

{

key_state++; // �D(zhu��n)��ȴ����IጷŠ�B(t��i)

key_time=0;

}

else

key_state--; // �ɴ����ƽ��ͬ���ؠ�B(t��i)0��(����̎��)

break;

case 2: // �ȴ����IጷŠ�B(t��i)

PORTD = 0b00000111; // �о�ȫ��ݔ�����ƽ

PORTD = 0b00000111; // �؏���һ��

if ( (Key_mask & PIND) == Key_mask)

{

key_state=0; // �о�ȫ������ƽ���ؠ�B(t��i)0

key_return= (key_line | key_value);//�@�����Iֵ

}

else if(++key_time>=100)//����L�r�g�]��ጷ�

{

key_time=0;

key_state=3;//�M���B�I��B(t��i)

key_return= (key_line | key_value);

}

break;

case 3://�����B�I��ÿ��50ms�͵õ�һ���Iֵ��windows xp ϵ�y(t��ng)�����@������

PORTD = 0b00000111; // �о�ȫ��ݔ�����ƽ

PORTD = 0b00000111; // �؏���һ��

if ( (Key_mask & PIND) == Key_mask)

key_state=0; // �о�ȫ������ƽ���ؠ�B(t��i)0

else if(++key_time>=5) //ÿ��50MS��һ���B���İ��I

{

key_time=0;

key_return= (key_line | key_value);

}

break;

}

return key_return;

}

��������4����B(t��i)��һ����I�P����ֻ��ǰ��3����B(t��i)�Ϳ�����������һ����B(t��i)�Ǟ�����“�B�I”�����O(sh��)Ӌ�ġ��B�I——���������ij���I�������tѸ�ٵĶ��푑�(y��ng)ԓ�Iֵ��ֱ����ጷ�������ѭ�h(hu��n)��ÿ��10ms׌ԓ�I�P���躯��(sh��)��(zh��)��һ�μ���;�҂�����r�ޞ�10ms,��ȻҪ�󲢲�������

2 ��(sh��)�a�ܵ��@ʾ

һ����r���҂��õİ�λһ�w�Ĕ�(sh��)�a�������ÄӑB(t��i)����ķ���������@ʾ;�dz��c�������ڸ���50hz���ϵ��W�q�r�l(f��)�F(xi��n)���˵��������҂��ڄӑB(t��i)���蔵(sh��)�a�ܵ��g���r�g�dz�ԣ�����@���҂�����r�ޞ�4ms(250HZ) ���ö��r�����r��2ms,�ڶ��r�Д�������M�В�����@ʾ��ÿ��ֻ�@ʾ���е�һλ;��Ȼ�r��Ҳ����Ū�LһЩ�������]�ķ����ǰ��@ʾ����(sh��)������ѭ�h(hu��n)���������r�Д�����λ����(y��ng)�Ę�־λ����;

// Timer 0 ���^ƥ���Д����(w��),4ms���r

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

display(); // �{(di��o)��LED�����@ʾ

……………………

}

void display(void) // 8λLED��(sh��)�a�܄ӑB(t��i)���躯��(sh��)

{

PORTC = 0xff; // �@��Ѷ��x���P(gu��n)�]�Ǻܱ�Ҫ������t��(sh��)�a�ܕ��a(ch��n)����Ӱ

PORTA = led_7[dis_buff[posit]];

PORTC = position[posit];

if (++posit >=8 )

posit = 0;

}

3 ���ڽ��Ք�(sh��)��(j��)��

���ڽ��Օr���Д෽ʽ�����@�o�ɺ�����������ԇ�D���Д����(w��)���������һ����(sh��)��(j��)�Ľ��վ��韩���������hӛס���Д����(w��)����(sh��)Խ��Խ������tӰ��@������Č��r������һ����(sh��)��(j��)��һ��������ɂ��ֹ�(ji��)���҂���Ҫ�Д�һ���Ƿ������У��Ƿ����_�����@���^�����҂�������ܛ���ӕr������������ѭ�h(hu��n)�ȴ��ȷ�ʽ;

�����҂��ڴ��ڽ����Дຯ��(sh��)����ֻ�ǰє�(sh��)��(j��)������һ�����_�������

���ڽM�Ɏ����Լ��z�鎬�Ĺ����҂�����ѭ�h(hu��n)�н�Q������ÿ��ѭ�h(hu��n)���҂�ֻ̎��һ����(sh��)��(j��)��ÿ���ֹ�(ji��)��(sh��)��(j��)��̎���g���ď��Ա��^��������҂��ѽ�(j��ng)�����������������

/*==========================================

���ܣ����ڰl(f��)�ͽ��յĕr�g�¼�

�f�������ڴ�ѭ�h(hu��n)��ÿ10msһ��

ݔ����none

ݔ�룺none

==========================================*/

void UARTimeEvent(void)

{

if (TxTimer != 0)//�l(f��)����Ҫ�ȴ��ĕr�g�f�p

--TxTimer;

if (++RxTimer > RX_FRAME_RESET) //

RxCnt = 0; //������ܳ��r(���������Ď����߽���һ�����)���ѽ��յIJ����������w

}

/*==========================================

���ܣ����ڽ����Д�

�f��������һ����(sh��)��(j��)�����뾏��

ݔ����none

ݔ�룺none

==========================================*/

interrupt [USART_RXC] void uart_rx_isr(void)

{

INT8U status,data;

status = UCSRA;

data = UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0){

RxBuf[RxBufWrIdx] = data;

if (++RxBufWrIdx == RX_BUFFER_SIZE) //���Ք�(sh��)��(j��)�ھ��_��

RxBufWrIdx = 0;

if (++RxBufCnt == RX_BUFFER_SIZE){

RxBufCnt = 0;

//RxBufferOvf=1;

}

}

}

/*==========================================

���ܣ����ڽ��Ք�(sh��)��(j��)��

�f��������0ݔ���r���յ�һ����(sh��)��(j��)

���ڴ�ѭ�h(hu��n)�Ј�(zh��)��

ݔ����==0:�]�Д�(sh��)��(j��)��

!=0:��(sh��)��(j��)��������

ݔ�룺none

==========================================*/

INT8U ChkRxFrame(void)

{

INT8U dat;

INT8U cnt;

INT8U sum;

INT8U ret;

ret = RX_NULL;

if (RxBufCnt != 0){

RxTimer = 0; //�����Ӌ��(sh��)�r�g��UARTimeEvent()�Ќ��ڽ��ճ��r���˷ŗ�������(sh��)��(j��)��̎��

//Display();

cnt = RxCnt;

dat = RxBuf[RxBufRdIdx]; // Get Char

if (++RxBufRdIdx == RX_BUFFER_SIZE)

RxBufRdIdx = 0;

Cli();

--RxBufCnt;

Sei();

FrameBuf[cnt++] = dat;

if (cnt >= FRAME_LEN)// �M��һ��

{

sum = 0;

for (cnt = 0;cnt < (FRAME_LEN - 1);cnt++)

sum+= FrameBuf[cnt];

if (sum == dat)

ret = FrameBuf[0];

cnt = 0;

}

RxCnt = cnt;

}

return ret;

}

���ϵĴ��aChkRxFrame()���Է��ڴ��ڽ��Ք�(sh��)��(j��)̎������(sh��)RxProcess() ����Ȼ�������ѭ�h(hu��n)�Ј�(zh��)�м�����������һ��Ӌ�r׃��RxTimer����΢��Ľ�Q�˽��Վ����r�ķŗ���̎�������]�����κεȴ���������ѭ�h(hu��n)��ÿ��ֻ�ǽ���һ���ֹ�(ji��)��(sh��)��(j��)���r�g�ܶ���

�҂��_ʼ�ܘ�(g��u)����ϵ�y(t��ng)�Ŀ�ܣ�

�҂��x��һ��ϵ�y(t��ng)�����õ�TIMER���a(ch��n)��ϵ�y(t��ng)�����ϵ�y(t��ng)���ʹ�(ji��)�����@���҂��x��4ms;

��meg8���҂����a���£�

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{

// Reinitialize Timer 0 value

TCNT0=0x83;

// Place your code here

if ((++Time1ms & 0x03) == 0)

TimeIntFlg = 1;

}

Ȼ���҂��O(sh��)Ӌһ��TimeEvent()����(sh��)�����{(di��o)��һЩ����ָ�����l����Ҫѭ�h(hu��n)�{(di��o)�õĺ���(sh��)��

����ÿ��4ms�҂����M��ι���Լ���(sh��)�a�܄ӑB(t��i)�����@ʾ��ÿ��1s�҂����{(di��o)��led�W�q������ÿ��20ms�҂��M���I�P�������;

void TimeEvent (void)

{

if (TimeIntFlg){

TimeIntFlg = 0;

ClearWatchDog();

display(); // ��4ms�¼������{(di��o)��LED�����@ʾ���Լ�ι��

if (++Time4ms > 5){

Time4ms = 0;

TimeEvent20ms();//��20ms�¼������҂�̎���I�P����read_keyboard_FUN2()

if (++Time100ms > 10){

Time100ms = 0;

TimeEvent1Hz();// ��1s�¼������҂�ʹ����ָʾ���W�q

}

}

UARTimeEvent();//���ڵĔ�(sh��)��(j��)�����¼�����4ms�¼���̎��

}

}

�@Ȼ����˼·�ѽ�(j��ng)����������cpu��Ҫ̎����ѭ�h(hu��n)�¼������Ը���(j��)�䌦�ڕr�g��Ҫ��ܷ���ļ���ԓ����(sh��)���������҂����@�¼���Ҫ��

��(zh��)���ٶȿ������̣�������̫�L���ӕr�ȴ����������¼�һ�Έ�(zh��)�Еr�g�ͱ��С��ϵ�y(t��ng)�Ļ��ʕr�gƬ4ms(����(j��)��Ҫ���ԼӴ�ϵ�y(t��ng)���ʹ�(ji��)��)�������҂����I�P�����������(sh��)�a���@ʾ���������ڽ��ճ���������ǰ��ʾ������Ʋ�������Ҫ�õ��^�L���ӕr(��ģ�MIIc�r�����õ����ӕr)

�҂��O(sh��)Ӌ���@�ӵ��ӕr����(sh��)��

void RunTime250Hz (INT8U delay)//���ӕr����(sh��)�Ć�λ��4ms(ϵ�y(t��ng)���ʹ�(ji��)��)

{

while (delay){

if (TimeIntFlg){

--delay;

TimeEvent();

}

TxProcess();

RxProcess();

}

}

�҂���Ҫ�ӕr�ĕr�g=delay*ϵ�y(t��ng)ӛס��(ji��)��4ms,�˺���(sh��)�ʹ_�������ӕr��ͬ�r���҂������¼�(�I�P������led�@ʾ��)Ҳ���]�б����`;

�����@���҂���������(sh��)main()���ܺ��̣�

Void main (voie)

{

Init_all();

while (1)

{

TimeEvent(); //����ѭ�h(hu��n)�¼���̎��

RxProcess(); //���ڌ����յĔ�(sh��)��(j��)̎��

TxProcess();// ���ڰl(f��)�͔�(sh��)��(j��)̎��

}

}

���w�����҂���ϵ�y(t��ng)�ͳ��ˌ���һ���f�ܵ�ģ����������(j��)�Լ����x��cpu,�x�����r�����������Լ����¼�����(sh��)�������dz��`��㌍����һ��Ć�Ƭ�C�܄��εĈ�����ԓģ�涼�ܸ㶨��

����ϵ�y(t��ng)��ȫ�֘�־������������ɢ��ɢ;ϵ�y(t��ng)���M���^С��ֻ�Ǡ�����һ��Timer���������YԴȱ���Ć�Ƭ�C�����dz��m;����(j��ng)���^һ���W(w��ng)�ѵ�ģ��“��Ƭ�C����ϵ�y(t��ng)”������51�����ӌ��������w˼·���@����������^�����ø���Ҏ(gu��)���o�����dz����p;�������X�ô��a�_�N��Ҫ��Щ���ÑT�˶�һ��Ŷ���������ڱ�ϵ�y(t��ng)��ȫ�֘�־���(q��)���¼������Ա��^���X���^��y��ȫ����ö�����עጣ�����Ҫע��һЩ�[�εĺ���(sh��)�f�w��r��ǧ�f��Ҫ�f�w��̫��Ŷ(�еĆ�Ƭ�C��֧��)��

http://bbs.21ic.com/icview-237577-1-1.html

��݋��admin  ����޸ĕr�g��2019-07-31

“(li��n)ϵ��ʽ

0755-82591179

���棺0755-82591176

�]�䣺vicky@yingtexin.net

��ַ�����������A�^(q��)���νֵ����δ��973�f�����S��(chu��ng)�I(y��)�@A��2��A08

Copyright © 2014-2025 �f���¿Ƽ����޹�˾ All Rights Reserved.  ��ICP��14043402̖-4

深圳市市场监督管理局企业主体身份公示