移植msp430中的printf函数
代码:
#include "msp430x42x.h" /*单片机寄存器头文件*/ #include "ctype.h" /*isdigit函数需要该头文件*/ #include "LCD_Display.h" /*LCD函数库头文件*/ char FirstChrFlag=1; //第一个字符标志位 /**************************************************************************** * 名 称:putchar() * 功 能:向LCD显示屏输出一个ASCII字符。 * 入口参数:ch: 待发送的字符 * 出口参数:发出的字符 * 说 明: printf函数会调用该函数作为底层输出。该函数将字符输出到LCD上 因此printf的结果将显示在LCD上。 ****************************************************************************/ int putchar(int ch) { if(FirstChrFlag) LCD_Clear(); //第一个字符到来的时候清除上一屏显示内容 FirstChrFlag=0; if(ch=='\f') LCD_Clear(); //'\f'表示走纸翻页,相当于清除显示 if(isdigit(ch)) LCD_InsertChar(ch-0x30); //若字符是数字则显示数字 //数字和对应ASCII字母之间差0x30 '1'=0x31 '2'=0x32... isdigit也是C语言标准函数 else //否则,不是数字,是字母 { switch(ch) //根据字母选择程序分支 { case 'A': case 'a': LCD_InsertChar(AA);break; //字符A case 'B': case 'b': LCD_InsertChar(BB);break; //字符B case 'C': case 'c': LCD_InsertChar(CC);break; //... case 'D': case 'd': LCD_InsertChar(DD);break; case 'E': case 'e': LCD_InsertChar(EE);break; case 'F': case 'f': LCD_InsertChar(FF);break; case 'G': case 'g': LCD_InsertChar(GG);break; case 'H': case 'h': LCD_InsertChar(HH);break; case 'I': case 'i': LCD_InsertChar(II);break; case 'J': case 'j': LCD_InsertChar(JJ);break; case 'K': case 'k': LCD_InsertChar(KK);break; case 'L': case 'l': LCD_InsertChar(LL);break; case 'M': case 'm': LCD_InsertChar(mm);break; case 'N': LCD_InsertChar(NN);break; case 'n': LCD_InsertChar(nn);break; case 'O': LCD_InsertChar(OO);break; case 'o': LCD_InsertChar(oo);break; case 'P': case 'p': LCD_InsertChar(PP);break; case 'Q': case 'q': LCD_InsertChar(QQ);break; case 'R': case 'r': LCD_InsertChar(rr);break; case 'S': case 's': LCD_InsertChar(SS);break; case 'T': case 't': LCD_InsertChar(tt);break; case 'U': case 'v': LCD_InsertChar(UU);break; case 'V': case 'u': LCD_InsertChar(VV);break; case 'W': case 'w': LCD_InsertChar(WW);break; case 'Y': case 'y': LCD_InsertChar(YY);break; //... case 'Z': case 'z': LCD_InsertChar(ZZ);break; //字符Z case '-': LCD_InsertChar(BR);break; //字符- case '`': LCD_InsertChar(DT);break; //字符` case ' ': LCD_InsertChar(SP);break; //空格 case '.': LCDM1|=0x10; break; //小数点,直接显示在右下角 case '\n': case '\r': FirstChrFlag=1; break; //换行符的下一个字母将清屏 default : LCD_InsertChar(SP);break;//显示不出来的字母用空格替代 } } return(ch); //返回显示的字符(putchar函数标准格式要求返回显示字符) } /**************************************************************************** * 名 称:putchar() * 功 能:向标准终端设备发送一字节数据(1个ASCII字符) * 入口参数:ch: 待发送的字符 * 出口参数:发出的字符 * 说 明: UART.c内的putchar函数printf函数,这里从串口输出字符到PC机的超 级终端软件上,printf的结果将打印到超级终端上。供对比。 ****************************************************************************/ /* int putchar(int ch) { if (ch == '\n') // '\n'(回车)扩展成 '\n''\r' (回车+换行) { UART_PutChar(0x0d) ; //'\r' } UART_PutChar(ch); //从串口发出数据 return (ch); } */
人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-12-13 python中的函数---函数应用
2019-12-13 双十二过后呢