当前位置: 首页 > news >正文

《嵌入式硬件(一):裸机概念与80c51单片机基础》

系统与操作特性

        裸机系统通常不包含操作系统,依赖直接硬件操作。RAM(随机存取存储器)用于临时数据存储,读写速度快但断电后数据丢失。

处理单元分类表
缩写全称功能描述
SoCSystem on Chip高性能处理单元(集成CPU/GPU/内存的高性能芯片)
MCUMicrocontroller Unit微小控制单元->单片机(集成存储与外设的单片机)
MPUMicroprocessor Unit微处理单元(需外接存储的处理核心)
GPUGraphics Processing Unit图像处理单元(专用于图形计算)
CPUCentral Processing Unit中央处理单元(通用计算核心)
数据类型规范
  • int类型占用2字节存储空间(16位系统)
  • unsigned int取值范围为0到65535(2^16-1)
  • 十六进制常量表示如0xFFFF对应十进制65535
寄存器操作原理

        寄存器(外设):是指能够操作硬件的,具有固定地址的内存空间

通用寄存器(如P0-P3)可通过数据类型直接映射:

unsigned char P0 = 0x00;  // 8位寄存器声明

特殊功能寄存器(SFR)具有固定物理地址,51架构中通过sfr关键字定义:

str P0 = 0x80;  // 地址0x80的端口寄存器

硬件接口标准
  • 原理图网络编号规则:红色标识相同电气节点
  • 电源符号标准:Vcc表示正电源,GND为地线
  • 外设接口类型:
    • GPIO:可编程输入/输出引脚
    • UART:异步串行通信接口
    • TIMER:硬件定时器模块
电平逻辑规范

共阴极LED晶体管:高电平时整个晶体亮

代码

1.

main.c

#include <reg52.h>
#include "led.h"
#include "digiter.h"
#include "delay.h"int main(void)
{int i;//必须定义在前面//led_on_all();//打开所有灯//led_off_on();//关闭所有灯//P2 &= ~((1 << 4)| (1 << 6) | (1 << 2) | (1 << 0));//开灯//P2 |= ((1 << 4)| (1 << 6) | (1 << 2) | (1 << 0));//关灯(需要先关灯)//P0 = t[9];//bit_select(1);//位选while(1){//P2 ^= 0x0F;//delay(60000);//延时/*for(i = 0;i < 8;++i){led_on(~(1 << i));//开某个灯delay(3000);}		for(i = 6;i >0; --i){led_on(~(1 << i));delay(3000);}	*//*for(i = 0;i < 10;++i){seqment_select(i);//段选delay(50000);} */ //show_number(1234);输出1234show_number(i++);计时器0~9999}
}

led.h

#ifndef _LED_H_
#define _LED_H_extern void led_on_all(void);
extern void led_off_on(void);
extern void led_on(unsigned int n);
#endif

led.c

#include <reg52.h>void led_on_all(void)
{P2 = 0;
}void led_off_on(void)
{P2 = 0xFF;
}void led_on(unsigned int n)
{P2 = n;
}

digiter.h

#ifndef _DIGITER_H_
#define _DIGITER_H_extern void bit_select(int n);
extern void seqment_select(int n);
extern void show_number(int n);#endif

digiter.c

#include <reg52.h>
#include "delay.h"
#include "digiter"void bit_select(int n)
{P1 &= ~(0x0F << 0);P1 |= (1 << n);
}void seqment_select(int n)
{unsigned char t[10] = {0X3F, 0X06, 0X5B, 0X4F, 0x66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F};P0 = t[n];delay(100);P0 = 0;delay(100);
}void show_number(int n)
{	if(n > 9999){return;}else if(n == 0){bit_select(0);seqment_select(0);}else{int t = 0;while(n){bit_select(t++);seqment_select(n % 10);n /= 10;}}
}

delay.h

#ifndef _DELAY_H_
#define _DELAY_H_extern void delay(unsigned int n);#endif

delay.c

#include <reg52.h>
#include "delay.h"void delay(unsigned int n)
{while(n--);
}

http://www.dtcms.com/a/364918.html

相关文章:

  • “十五五”国家科技创新规划-建议
  • 百度智能云「智能集锦」自动生成短剧解说,三步实现专业级素材生产
  • Netty + WebSocket:搭建快速且稳定的双向通信通道
  • word文档中从某一页开始页码全是1
  • Wpf程序屏幕居中问题修复全记录
  • 39.Ansible: 包含与导入
  • FastVLM:高效视觉编码助力视觉语言模型突破高分辨率效率瓶颈
  • 独家|字节Seed部门增发百万期权,大模型战线开启“锁人”模式
  • 【golang长途旅行第37站】Redis连接池
  • MMD动画(一)模型、动作、音乐导入
  • 【大前端】React 父子组件通信、子父通信、以及兄弟(同级)组件通信
  • 科技赋能田园:数字化解决方案开启智慧农业新篇章
  • centos9 docker启动不起来,docker启动发生堵塞问题!
  • 【明道云】[工作表控件5] 手机控件的格式化处理
  • 【机器学习】实战:市场增长点分析挖掘项目
  • SyncBack 备份同步软件: 使用增量备份, 节省网络传输及存储成本
  • 【NVIDIA B200】2.all_reduce_perf NVIDIA B200 8-GPU 系统 All-Reduce 性能深度解析
  • 力扣115:不同的子序列
  • 热烈庆祝 | 一二三物联网携这款产品入选2025年度山东省首台(套)技术装备生产企业及产品名单
  • Day20 JavaScript 进阶核心:IIFE、代码规范、调试与对象模型
  • AI优化SEO关键词策略指南
  • 时序数据库选型指南:Apache IoTDB快速部署与实战应用
  • 时序数据库IoTDB的核心优势
  • mysql第五天学习 Mysql全局优化总结
  • 如何使文件夹内的软件或者文件不受windows 安全中心的监视
  • FastGPT社区版大语言模型知识库、Agent开源项目推荐
  • 智慧用电安全解决方案:打造全流程可视化管控
  • 知微集:Python中的线程Thread(一)
  • MCP是什么? 小白如何学习使用MCP?一篇文档带你详细了解神秘的MCP
  • 【C++】控制台输入与输出