马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我依据百度文库的一篇文章,尝试以下仿真: proteus电路图:
细节:
期望的仿真结果是LED灯闪烁,同时虚拟终端显示"The LED is down!\n"或者"The LED is up!\n"。 keil代码: #include "LPC21XX.H" #define CR 0x0D char ledDown[]={"The LED is down!\n"}; char ledUp[]={"The LED is up!\n"}; int putchar (int ch) {/* 向串口输出一个字符 */ if (ch == '\n') { while (!(U1LSR & 0x20)); U1THR = CR; } while (!(U1LSR & 0x20)); return (U1THR = ch); } void delay (void) { unsigned volatile long i,j; for(i=0;i<60000;i++) for(j=0;j<5;j++); } void serialPuts(char *p) {/* 向串口输出字符串 */ while (*p != '\0') { putchar(*p++); } } int main (void) { /* 开始初始化串口 */ PINSEL0 = 0x00050000;/* 设置引脚,开串口功能 */ U1LCR = 0x83;/* 8位数据,无校验,一个停止位 */ U1DLL = 97;/* VPB 15MHz的时候波特率为9600 */ U1LCR = 0x03;/* DLAB = 0 */ /* 结束初始化串口 */ IO0DIR = 0x000001;/*将P0.0设置为输出 */ while (1) { IO0CLR = 0x000001; serialPuts(ledUp); delay(); IO0SET = 0x000001; serialPuts(ledDown); delay(); } } 在用keil生成hex文件时,如果不选择project菜单下【Options for Target 'Target1'】的【Linker】选项卡中 【Use Memory Layout From Target】,再用proteus仿真,结果正确:
如果选择project菜单下【Options for Target 'Target1'】的【Linker】选项卡中 【Use Memory Layout From Target】,再用proteus仿真,LED闪烁正常,但虚拟终端显示乱码:
其中的符号“@”是随LED闪烁逐个出现的。请问这是怎么回事?感激不尽! |