1.基本概念
**裸机程序:**所编写的代码直接操作硬件(即直接与HARD WARE 交互);
CPU(中央处理器):计算机的核心部件,负责执行指令和处理数据。
MPU(微处理器):通常指更通用的处理器,强调计算能力。
MCU(微控制器):集成了CPU、内存、外设等的单片芯片,常用于嵌入式系统。
GPU(图形处理器):专用于图形和并行计算的处理器。
**外设寄存器:**是指能够操作硬件的,具有固定地址的内存空间。
LED实验中使用的寄存器:
P1寄存器:在数码管模块中使用,用来选择点亮的位区。
P2寄存器:LED灯点亮。
P0寄存器:用来选择点亮的段区。
GPIO(通用输入输出):
可编程的引脚,可通过软件控制其输入或输出模式,用于连接外部设备。
补充在51单片机中int型只占2字节;
2.LED
低电平亮
cs
#include <reg52.h>
#include "led.h"
#include "delay.c"
void led_all_on(void)
{
P2 = 0;
}
void led_all_off(void)
{
P2 = 0XFF;
}
void led_on(unsigned char n)
{
P2 = ~n;
}
void led_each_on(void)
{
while(1)
{
int i;
for(i = 0; i < 8; ++i)
{
led_on(1 << i);
delay(10000);
}
for(i = 6;i > 0;--i)
{
led_on(1 << i);
delay(10000);
}
}
}
3.数码管模块
高电平亮
cs
#include "digital.h"
#include <reg52.h>
#include "delay.h"
void bit_select(int n)
{
P1 &= ~(0x0F << 0);
P1 |= (1 << n);
}
void segment_select(int n)
{
unsigned char t[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
P0 = t[n];
delay(500);
P0 = 0;
delay(100);
}
void show_number(int n)
{
int t = 0;
if(n > 9999)
{
return;
}
if(0 == n)
{
bit_select(0);
segment_select(0);
}
while(n)
{
bit_select(t++);
segment_select(n % 10);
n /= 10;
}
}