要求

在PC上发送L11控制开发板led1亮,发送L10控制开发板led1灭;

在PC上发送L21控制开发板led2亮,发送L20控制开发板led2灭;

在PC上发送L31控制开发板led3亮,发送L30控制开发板led3灭;

在PC上发送L41控制开发板led4亮,发送L40控制开发板led4灭;

PC使用串口助手发送;

代码

#include <string.h>
#include <stdlib.h>//0x50000020(L)
//0x50000023(B)
//(字节) UART 通道0 发送缓冲寄存器
#define UTXH0       (*(volatile unsigned int *)0x50000020)//UTXH0
#define UTRSTAT0    (*(volatile unsigned int *)0x50000010)  //R UART 通道0 Tx/Rx 状态寄存器
#define ULCON0      (*(volatile unsigned int *)0x50000000)//  //R/W UART 通道0 线路控制寄存器
#define UCON0       (*(volatile unsigned int *)0x50000004)//  //R/W UART channel 0 control register
#define UBRDIV0     (*(volatile unsigned int *)0x50000028) //  R/W 波特率分频寄存器0
#define GPHCON      (*(volatile unsigned int *)0x56000070)   //R/W 配置端口H 的引脚
//URXH0
//0x50000024(L)
//0x50000027(B)
//W
//(字节) UART 通道0 接收缓冲寄存器 –
#define URXH0       (*(volatile unsigned int *)0x50000024)//URXH0
//UFCON0 0x50000008 R/W UART 通道0 FIFO 控制寄存器 0x0
#define UFCON0      (*(volatile unsigned int *)0x50000008)//URXH0
//UMCON0 0x5000000C R/W UART 通道0 Modem 控制寄存器 0x0
#define UMCON0      (*(volatile unsigned int *)0x5000000c)//URXH0
//灯
//GPBCON  0x56000010  R/W  配置端口 B 的引脚
#define GPBCON  (*(unsigned int *)0x56000010)
//GPBDAT  0x56000014  R/W  端口 B 的数据寄存器
#define GPBDAT  (*(unsigned int *)0x56000014)#define PCLK    (50000000)
#define BPS     (115200)unsigned char buff[3];
char len = 0;void delay(int time)
{int i;for(i=0; i<time; i++);
}
void uart0_init(void)
{GPHCON = (2<<4) | (2<<6);//配置串口引脚功能ULCON0 = 0x3;//设置串口0的数据位8,停止位1,校验位无UCON0 = (1<<2)|(1<<0);//使能发送,接受模式//UBRDIVn = (int)( UART 时钟 / ( 波特率 × 16) ) –1UFCON0 = 0;UMCON0 = 0;UBRDIV0 = PCLK/(BPS*16) -1;
}
void uart0_sendchar(unsigned char date)
{UTXH0 = date;while((UTRSTAT0&0x04)==0); // UTXH0 = date;
}char uart0_recvchar(void)
{while((UTRSTAT0&0x01)==0);return URXH0;
}
void uart0_recvstring(char *ch,int len)
{while(len--){*ch = uart0_recvchar();ch++;}*ch = '\0';
}
void uart0_sendstring(char* string)
{while(*string != 0){uart0_sendchar(*string);string++; }
}
void led_init(void)
{GPBCON = (1<<10)|(1<<12)|(1<<14)|(1<<16);GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8);
}
void judge_led(char *recv)
{if(strcmp(recv,"L10")==0){GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8);}else if(strcmp(recv,"L11")==0){GPBDAT = (0<<5)|(1<<6)|(1<<7)|(1<<8);}else if(strcmp(recv,"L21")==0){GPBDAT = (1<<5)|(0<<6)|(1<<7)|(1<<8);}else if(strcmp(recv,"L20")==0) {GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8); }else if(strcmp(recv,"L31")==0) {GPBDAT = (1<<5)|(1<<6)|(0<<7)|(1<<8); }else if(strcmp(recv,"L30")==0) {GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8); }else if(strcmp(recv,"L41")==0) {GPBDAT = (1<<5)|(1<<6)|(1<<7)|(0<<8); }else if(strcmp(recv,"L40")==0) {GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8); }
}
int main(void)
{char recv[4]={0};uart0_init();led_init();while(1){    uart0_recvstring(recv,3);  uart0_sendstring(recv);delay(0x2000);judge_led(recv);memset(recv,0,strlen(recv)+1);}
}

mini2440A 裸机编程:串口控制LED灯的亮灭相关推荐

  1. 串口接收字符/字符串/定向printf串口发送/用串口控制led灯的亮灭

    ##usart.h//串口头文件 #include "stm32f10x.h" #include <stdio.h> void usart_init(); void U ...

  2. 红外控制LED灯的亮灭———Arduino

    Arduino的中文社区:https://www.arduino.cn/ \黑脸,今天烧坏一个二极管. 原因:正负极没反,没接电阻. 把自己头打烂了- 1. 所需硬件 开发板,led灯(多个),遥控器 ...

  3. 单片机基础:开关控制LED灯的亮灭

    (一) 单片机的初级运用.通过两个开关来控制LED灯的亮灭.首先要使用Proteus来绘制电路原理图.图中的LED灯为共阴接法.如图: (二)当单片机P3口做输入时,首要让其端口输出1.如图中的P3^ ...

  4. Java 通过GPIO控制LED灯的亮灭(一)

    Java 通过GPIO控制LED灯的亮灭(Firefly-RK3399)(一) Note: 为Android 开发,开发工具AndroidStudio 什么是 GPIO ,(General-purpo ...

  5. 嵌入式开发控制LED灯的亮灭

    目录 一.创建项目 背景: 1.选好自己需要的开发板(这里使用的STM32F103C8T6的开发板) 2.引脚配置 3.EXIT配置 4.配置SYS 5.配置GPIO 6.项目配置 二.Keil配置 ...

  6. cc2530 按键中断实验——按键控制LED灯的亮灭

    在本次学习中,主要通过外部中断来控制LED的亮灭. 首先,先查看相关电路图.由图可知,当CC2530端口1的1号引脚输出低电平时,LED3将被点亮,当按键31按下时,端口1的1号引脚将为低电平,抬起时 ...

  7. 按钮控制LED灯的亮灭

    实验通过主板自带的小灯泡和按钮实现通过按钮来控制小灯泡的亮灭. 对按钮的输入次数进行判断从而进行控制灯的亮灭. volatile int b1; volatile int b2; volatile i ...

  8. 【补作业】msp430单片机(一)控制LED灯的亮灭

    硬件描述 两个LED灯: P1.0接LED1(红),P4.7接LED2(绿). IO口输出高电平时,LED亮 IO口输出低电平时,LED灭 点亮红灯 (ccs中的c语言代码,用430进行调试) P1口 ...

  9. 【Arduino基础】倾斜开关控制led灯的亮灭

    实验现象 手拿着面包板,当倾斜到一定程度时,LED被点亮:没有倾斜时,led不亮. 理论学习 当开关一端低于水平位置倾斜,开关导通,模拟口电压值为5V左右 (数字二进制表示为1023),点亮led灯. ...

最新文章

  1. 关于Swing窗体有时候要放大缩小边框才能显示问题?
  2. Makefile中的wilcard函数
  3. Codeforces 1344 题解
  4. 运行在Spark大数据上的应用体系架构
  5. LinkedList 的实现原理浅析
  6. Swift多线程:GCD进阶,单例、信号量、任务组
  7. 【FPGA】——UART串口通信
  8. 详解go语言的array和slice 【一】
  9. 买了小区一楼的感受是怎样的?
  10. Pytorch的一些损失函数
  11. jedate时间插件
  12. AI自动还原OpenCV制作的九宫格拼图游戏(附源码)
  13. 谷歌浏览器html播放音乐,谷歌浏览器听歌插件:用Listen1听歌超方便!‖干货大放送...
  14. 冯·诺依曼理论的要点
  15. 利用软连接实现 OneDrive 任意文件夹同步
  16. php的命令执行函数,PHP命令执行函数 - osc_joe3czc9的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. 手机系统软件测试员,手机软件测试员做啥的?行业分析
  18. 新版悟能口罩预约小程序源码V1.1.1
  19. 计算机系学生橱窗分析结果怎么写,2015年高职学生职业生涯规划书
  20. java制作我的世界_Minecraft Java版整合包制作教程

热门文章

  1. Go内部培训——节点解析1-10
  2. matplotlib保存图片为pdf格式,文字以字体形式保存,可以illustrator编辑,而不是喵点格式。
  3. 如何写出一篇爆款文章?【CSDN攻略】创作技巧篇
  4. C# Asp.net Active控件开发全过程
  5. 职场想胜出,那一定要做出比别人好看的柱状图?
  6. python paramiko sftp_paramiko ssh sftp
  7. mysql可以使用dataguard,DataGuard相关参数
  8. java获取系统日期_java怎么获取当前日期
  9. Mac如何设置盖上电脑盖不待机,能够播放音乐。
  10. imx6ull开发板各个功能测试