商业网站缩写,有美元进账去外管局网站做啥,wordpress媒体库文件路径,西安东郊网站建设公司目录 前言
一、原理图及知识点介绍
1.1、LED原理图
1.2、MCU51原理图
二、代码分析
知识点一#xff1a;#include reg52.h //此文件中定义了单片机的一些特殊功能寄存器
知识点二#xff1a;你知道sfr P0 0x80;是怎么来的呢为什么要赋值0x80#xff…目录 前言
一、原理图及知识点介绍
1.1、LED原理图
1.2、MCU51原理图
二、代码分析
知识点一#include reg52.h //此文件中定义了单片机的一些特殊功能寄存器
知识点二你知道sfr P0 0x80;是怎么来的呢为什么要赋值0x80
知识点三sbit 与sfr在哪里定义的为什么keil中可以用其他的编译开发工具不能使用还会报错 前言
因为是实验一所以我们会啰嗦一点把大家当作有一定基础的。
用一款开发板需要怎么操作才能用起来呢。
当然是说明书了
我们需要一下几个资料开发板原理图开发手册开发工具 一、原理图及知识点介绍
1.1、LED原理图
本节我们学习LED,我们自然只需关注开发板的LED部分原理图即可如下图 图中J12为一个8pin的排针接口通过74HC245芯片接上一个限流电阻再接到LED(D11~D18)的阳极
分析
从图中可以看出LED的阴极全部接地我们控制LED的亮灭只需控制阳极
高电平为点亮低电平为熄灭
现在只需搞清楚如何使用芯片74HC24574HC245芯片的用途_ManGo CHEN的博客-CSDN博客下面是管脚的定义说明 分析
从结合原理图与表可以分析出
A0-A7为输入B0-B7为输出OE:必为L(低电平)、DIR:必为H(高电平)单片机通过控制A0-A7间接的控制LED的点亮与熄灭
1.2、MCU51原理图 当然还有一部分原理图就是MCU的如下图: 这部分原理图我们就没有什么好分析的了当然仔细琢磨其中还是有很多耐人寻味的设计大家感兴趣可以参考一下博文原理图分享一单片机_CT107D训练平台使用说明与电路原理图_ManGo CHEN的博客-CSDN博客
二、代码分析
先来介绍一下工程 下面我们就直接上代码
/**************************************************************************************
* 点亮第一个LED实验 *
实现现象下载程序后D11指示灯点亮
注意事项无
***************************************************************************************/#include reg52.h //此文件中定义了单片机的一些特殊功能寄存器sbit ledP0^0; //将单片机的P0.0端口定义为led/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{while(1){led1; //P0.0端口设置为低电平}
}
这里我们将分析一些工作中耐人寻味的一些问题一些比较基础问题我们就不讨论分析了当然可以在评论区或私信我一起讨论学习。
知识点一#include reg52.h //此文件中定义了单片机的一些特殊功能寄存器
这个头文件你们打开看过吗今天我们一起打开看一看头文件中都有什么
/*--------------------------------------------------------------------------
REG52.HHeader file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/#ifndef __REG52_H__
#define __REG52_H__/* BYTE Registers */
sfr P0 0x80;
sfr P1 0x90;
sfr P2 0xA0;
sfr P3 0xB0;
sfr PSW 0xD0;
sfr ACC 0xE0;
sfr B 0xF0;
sfr SP 0x81;
sfr DPL 0x82;
sfr DPH 0x83;
sfr PCON 0x87;
sfr TCON 0x88;
sfr TMOD 0x89;
sfr TL0 0x8A;
sfr TL1 0x8B;
sfr TH0 0x8C;
sfr TH1 0x8D;
sfr IE 0xA8;
sfr IP 0xB8;
sfr SCON 0x98;
sfr SBUF 0x99;/* 8052 Extensions */
sfr T2CON 0xC8;
sfr RCAP2L 0xCA;
sfr RCAP2H 0xCB;
sfr TL2 0xCC;
sfr TH2 0xCD;/* BIT Registers */
/* PSW */
sbit CY PSW^7;
sbit AC PSW^6;
sbit F0 PSW^5;
sbit RS1 PSW^4;
sbit RS0 PSW^3;
sbit OV PSW^2;
sbit P PSW^0; //8052 only/* TCON */
sbit TF1 TCON^7;
sbit TR1 TCON^6;
sbit TF0 TCON^5;
sbit TR0 TCON^4;
sbit IE1 TCON^3;
sbit IT1 TCON^2;
sbit IE0 TCON^1;
sbit IT0 TCON^0;/* IE */
sbit EA IE^7;
sbit ET2 IE^5; //8052 only
sbit ES IE^4;
sbit ET1 IE^3;
sbit EX1 IE^2;
sbit ET0 IE^1;
sbit EX0 IE^0;/* IP */
sbit PT2 IP^5;
sbit PS IP^4;
sbit PT1 IP^3;
sbit PX1 IP^2;
sbit PT0 IP^1;
sbit PX0 IP^0;/* P3 */
sbit RD P3^7;
sbit WR P3^6;
sbit T1 P3^5;
sbit T0 P3^4;
sbit INT1 P3^3;
sbit INT0 P3^2;
sbit TXD P3^1;
sbit RXD P3^0;/* SCON */
sbit SM0 SCON^7;
sbit SM1 SCON^6;
sbit SM2 SCON^5;
sbit REN SCON^4;
sbit TB8 SCON^3;
sbit RB8 SCON^2;
sbit TI SCON^1;
sbit RI SCON^0;/* P1 */
sbit T2EX P1^1; // 8052 only
sbit T2 P1^0; // 8052 only/* T2CON */
sbit TF2 T2CON^7;
sbit EXF2 T2CON^6;
sbit RCLK T2CON^5;
sbit TCLK T2CON^4;
sbit EXEN2 T2CON^3;
sbit TR2 T2CON^2;
sbit C_T2 T2CON^1;
sbit CP_RL2 T2CON^0;#endif
上面的代码中果然是SFR定义的都是特殊功能寄存器sbit定义的为这些特殊功能寄存器的某一位的功能位寻址。
我们这次主要用到的是P0这个特殊功能寄存器。
知识点二你知道sfr P0 0x80;是怎么来的呢为什么要赋值0x80
当然是看手册得来的看什么手册呢当然是MCU的手册喽从手册中可以得知这些特殊功能寄存器的地址是多少 这个问题上次问了一个研究生他只能淡淡的回答道是库文件规定好的你如果能找到其根源那么你就学习就已经很入门了。
知识点三sbit 与sfr在哪里定义的为什么keil中可以用其他的编译开发工具不能使用还会报错 这个问题就与开发工具有关了sbit 与sfr并不是C语言中的关键字属于Keil的拓展指令
sfr指令用来直接描述硬件地址可以理解为“一组IO口的起始地址例如sfr P0 0x80 //P0就是一组IO口”一般只用P1,P2,P3的IO口具体原因与硬件相关这里不展开描述sbit指令对应可寻址空间的一个位可以理解为一个IO口/针脚的地址(例如sbit led1P0^0 //这个意思就是找到P0这组IO口的第一个IO口并把它命名为led1)
不要问我怎么知道问就告诉你通过keil查的详细就不展开了 剩下的代码就是C语言没有什么好分析的大家自行消化。欢迎一起探讨。