微型计算机技术讲义01-C51基础

微型计算机技术应用讲义01

标签(空格分隔): 物联网 单片机 嵌入式 讲义

[TOC]

1. 51单片机回顾

1.1 51单片机的硬件结构

  • 51单片机的管脚
    • 管脚总体介绍
    • P0、P1、P2、P3
    • V_{cc}、V_{ss}
    • RST
    • XALT1、XALT2
    • \overline{EA}、ALE、\overline{PSEN}
      image_1clsv2licu7j19iiing72gdq1p.png-41.3kB
      image_1clsv2licu7j19iiing72gdq1p.png-41.3kB

      image_1clsvm27e1qhf183r7dlrfc4g243.png-100.2kB
      image_1clsvm27e1qhf183r7dlrfc4g243.png-100.2kB

      image_1clsvo9fan6u1i2k9d4esloj150.png-108.3kB
      image_1clsvo9fan6u1i2k9d4esloj150.png-108.3kB

      image_1clsvqs9514ecapkc17o11uoh5d.png-86.5kB
      image_1clsvqs9514ecapkc17o11uoh5d.png-86.5kB

1.2 51单片机最小系统原理图

单片机、电源、晶振电路、复位电路

image_1clt4e03ubmj24j1rgb14s3te6f2.png-84.2kB
image_1clt4e03ubmj24j1rgb14s3te6f2.png-84.2kB

1.3 51单片机的存储结构

image_1clsvgtkm1t2i1oep1qn2fdc1i4639.png-71.7kB
image_1clsvgtkm1t2i1oep1qn2fdc1i4639.png-71.7kB

image_1clsvjr4umf71uic1cug1bl91ek33m.png-65.8kB
image_1clsvjr4umf71uic1cug1bl91ek33m.png-65.8kB

image_1clt0oonusk21runfig1q2s45c5q.png-38.1kB
image_1clt0oonusk21runfig1q2s45c5q.png-38.1kB

2. C51程序设计入门

2.1 新建C51工程

image_1clt12pg0htet9md7cpd6pih77.png-33.8kB
image_1clt12pg0htet9md7cpd6pih77.png-33.8kB

image_1clt14vjh1sn9p6qd401alu19k27k.png-51.3kB
image_1clt14vjh1sn9p6qd401alu19k27k.png-51.3kB

image_1clt1c05ovf3q7dj762ti1ht3a1.png-46.7kB
image_1clt1c05ovf3q7dj762ti1ht3a1.png-46.7kB

image_1clt1eh9v30r394106cqdi102pbe.png-29.4kB
image_1clt1eh9v30r394106cqdi102pbe.png-29.4kB

2.2 最简单的C51流水灯程序示范

//common.h
#ifndef __COMMON_H__
#define __COMMON_H__
    //C99标准数据类型,增强程序的可移植性!
    typedef unsigned char uint8_t;
    typedef          char int8_t;
    typedef unsigned int  uint16_t;
    typedef          int  int16_t;
    typedef unsigned long uint32_t;
    typedef          long int32_t;

    #define TRUE  1
    #define FALSE 0

#endif

//exp01.c
#include <reg51.h>   //关于特殊功能寄存器的一些定义
#include "intrins.h" //移位函数库
#include "common.h"  

uint8_t i = 0;
sbit LED0 = P2^0;
void delay_ms(uint16_t dly);   //使用函数之前必须先声明!!!

void main(){
  P1 = 0xfe;
  while(TRUE){          //主循环,必须有!!!必须有!!!必须有!!!
    for(i = 0; i < 8; i++){
      delay_ms(1000);     //延时1000ms,注意函数调用和函数声明的区别!!!
      P1 = _crol_(P1,1); //P1循环左移1位
      LED0 = !LED0;      //LED0取反
    }
  }
}

void delay_ms(uint16_t dly){
  
  uint8_t i;
  while(dly--)
    for(i = 110; i > 0; i--);
}

2.3 与proteus联合调试

  • proteus设置


    image_1clt3kkkfos12hd91ree10nocb.png-206.7kB
    image_1clt3kkkfos12hd91ree10nocb.png-206.7kB
  • keil设置


    image_1clt3leh210hjoqo1ot1dngue0d8.png-238.5kB
    image_1clt3leh210hjoqo1ot1dngue0d8.png-238.5kB
  • 演示效果


    image_1clt3u3pvaoaqsv2kn1t3t118ce5.png-182.9kB
    image_1clt3u3pvaoaqsv2kn1t3t118ce5.png-182.9kB
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单片机中常见电平 TTL电平:一般用作数字芯片的电平,单片机大多是TTL电平,高电平+5V,低电平0V。不过通常是...
    IWillGo阅读 1,744评论 0 6
  • 从入门学习单片机到现在,不知不觉有了八个年头,也确实积累了一些经验。经常在网上发布一些开源设计,不免会被问起,如何...
    穿山甲开源工作室阅读 7,864评论 7 60
  • 文章框架 前言 猴!今儿扯串口,相对于并行——一口气全把数据扔过去,串行显得更加稳重——一位一位来。串行就是这样,...
    兔子泽阅读 5,462评论 2 26
  • 简介:block作为消息传递,在oc中的用处非常的广,自定义视图的回调,modal视图的回调,多线程中异步去加载数...
    吖几角阅读 388评论 0 1
  • 夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况于无算乎?吾以此观之,胜负见矣。 大...
    远近的远阅读 199评论 0 0