完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
相关推荐
6个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
串口最方便了,注意一下电平匹配
|
|
|
|
|
|
两个单片机如果是平等地位可以选择用串口。如果多个单片机,地位分为1主机多从机,选用SPI通信;如果多单片机地位平等,选择CAN通信方式。这些方式还有同步异步之分,等等,按照需求选择。
|
|
|
|
|
|
串口Uart,I2C也行
|
|
|
|
|
|
舵机控制板和51 单片机通讯 /********************************************************************* * 本程序在STC89C51RC 单片机中进行过测试,完全正常(晶振11.0592M) *用户可以根据晶振不同自行修改,建议用户先连接PC,通过PC 的串口调试 * 助手来验证程序是否有效 * P30: RXD * P31: TXD **********************************************************************/ #include #ifndef _DG_TYPE_ #define _DG_TYPE_ typedef unsigned char uchar; typedef unsigned int uint; #endif #define CMD_LEN 75 // 命令长度 #define CMD_TAG 1 // 提示符长度 void UartInit(); void UartSendChar(unsigned char ch); void UartSendStr(uchar *pStr); void UartCharPro(uchar ch); void UartCmdPro(); uchar g_ucCmd[CMD_LEN + 1] = {0}; uchar g_ucLen = 0; // 命令长度 uchar g_ucCur = 1; // 光标位置 void main() { UartInit(); UartSendStr("#1P1500T100rn"); // S1 号舵机在时间100ms 内移动到PWM1500 的位置 // UartSendStr("#1GC2rn"); // 执行第一个动作组,循环执行2 次 while(1); } /************************************************************ * Name: UartInit * Func: * 串行通信初始化 * Para: * uchar ch: 发送的字符 * Return: None ***********************************************************/ void UartInit() { SCON = 0x50; // SCON: serail mode 1, 8-bit UART TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80; // SMOD="1"; TH1 = 0xFA; // Baud:9600 fosc="11".0592MHz TL1 = 0xFA; IE |= 0x90; // 使能串行中断 TR1 = 1; // 启动TIMER1 EA = 1; } /************************************************************ * Name: UartSendChar * Func: * 向串口发送一个字符 * Para: * uchar ch: 发送的字符 * Return: None ***********************************************************/ void UartSendChar(unsigned char ch) { SBUF = ch; while(TI==0); TI=0; } /************************************************************ * Name: UartSendStr * Func: * 向串口发送以0 结尾的字符串 * Para: * uchar *pStr: 发送的字符指针 * Return: None ***********************************************************/ void UartSendStr(uchar *pStr) { while(*pStr != 0) { SBUF = *pStr++; while(TI==0); TI=0; } } void UartSrv() interrupt 4 { unsigned char ch; ch = SBUF; if(RI) { RI = 0; //UartSendChar(ch); //P0 = ~ch; UartCharPro(ch); } } /************************************************************ * Name: UartCharPro * Func: * 字符处理过程函数。根据输入的普通字符或控制字符判断回显。 * Para: * uchar ch: 判断的字符 * Return: None ***********************************************************/ void UartCharPro(uchar ch) { P0 = ~ch; switch(ch) { case 'b': // 退格键 if(g_ucCur > CMD_TAG) { UartSendChar('b'); UartSendChar(' '); UartSendChar('b'); if(g_ucLen) { g_ucLen--; } g_ucCur--; } break; case 'r': // 回车键 UartSendChar('r'); UartSendChar('n'); g_ucCmd[g_ucLen] = 0; UartSendStr(g_ucCmd); UartSendChar('r'); UartSendChar('n'); UartSendChar('>'); g_ucLen = 0; g_ucCur = 1; break; default: // 其它字符 UartSendChar(ch); g_ucCur++; if(g_ucLen < CMD_LEN) { g_ucCmd[g_ucLen++] = ch; } else { g_ucCmd[g_ucLen] = 0; } } } |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:31 , Processed in 0.920989 second(s), Total 85, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3516