实验原理
ARM的P0.0口接LED,串口接Proteus的虚拟终端。每隔一段时间改变一次LED的状态,并且在串口上输出LED的当前状态。
Proteus仿真电路图
C语言源程序
#include <LPC21xx.H>#include "uart.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; a } 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(); } }
复制代码