粤嵌学习笔记(一)


问题的引入:
    什么是单片机? 



        单片机又称之为单片机微型控制器,它不是完成某一个逻辑功能的芯片 , 
        而是把一个计算机系统集成到一块芯片中去,
        概括为一句话:
            “微型计算机”
            
        在一片集成电路芯片上,集成了中央处理器、和存储器以及I/O接口电路,
        从而构成了单芯片微型计算机 , 简称单片机

任何一款单片机:
        
        1、不管是复杂还是简单,微控制器的基本结构  : 内核 + 外设
        2、内核通过寄存器控制外设 , 外设通过中断系统通知内核,内核    
            与外设之间通过总线传输数据 、 地址及控制信息。
        
        3、基本程序设计:
            读写寄存器 , 处理中断源 , 访问内部总线
            
=========================================================================

C语言复习:
    
        C语言中什么为真 , 什么为假?
            
        1 真 0 假
        
        顺序结构:
            代码安装从上到下的顺序执行
            分支结构:
                if(表达式为真)
                {
                    执行表达式1
                    ·····
                    ······
                    
                    ·······
                }
                else
                {
                    执行表达式2
                }
        
        循环结构:
            while()
            {
                
            }
            
            for( i = 0 ;     i < ?····2 ;  i++ ···· 3)
            {
                
            }
            
            do
            {
                
            }while();
        
        
===========================================================================

单片机芯片
    GPIO引脚
        简单来说 , 51单片机有32个重要的引脚
        分为 4 组  , 每组 8 个
        4 组我们怎么命名?
        
        
        P0:
            寄存器的地址是 0x80 字节地址
            位地址:    0x80 ~ 0x87
            P0.0        0x80
            P0.1        0x81
            P0.2
            p0.3        ····
            
            ····
            P0.7        0x87
            
            
            假设我要给P0这个寄存器一个高电平 ,怎么操作?
            
            1111   1111 ---》 0x80 字节地址
            
            假设我要给P0.5寄存器引脚一个低电平 怎么操作?
            
            1111   0111 --》  0x80 字节地址
            
        
        P1:
              位地址:    
                    0x90 ~ 0x97
        
        P2:
        
                位地址:
                    0xA0  ~ 0xA7
                    
        
        P3:
                位地址:    
                    0xB0 ~ 0xB7
        
        我们要去判断某一个引脚他的电平为 1 还是 0?
            
            
        unsigned char a = P0.1
        
            if(a == 1)
            {
            }
            else
            {
            
            }
        
=================================================================        
 / ---------------- LED ---------------------/
 
 那么我们学习51单片机 , 从LED开始
 
 LED 灯:
    我们的51开发板 , 一共配置了8个LED灯,
    那么我们如何去知道8个LED灯对应的引脚?
    
    那么如何点亮LED灯?
        只需要把对应的引脚置为低电平 即可
        
    
    如何设计程序?
        引入对应的芯片头文件
            #include <reg52.h>
        
    如何定义一个引脚?
        sbit  LED_0   =  P1^0;
        
    
    sbit 是什么?
        这是C51扩展的变量类型 , 是定义特殊功能寄存器的位变量, 是一种
        类型定义
        简单来说分三种:
            1、sbit  位变量名  = 地址值
            2、sbit  位变量名  = SFR 名称^变量地址值
            3、sbit  位变量名  = SFR 地址值^变量位地址
        
        
        特别注意:
            sbit 只能在外部定义全局变量;
            
        
        
        延时程序
        
        
        void delay_ms( unsigned int time)
        {
            while(time --)
            {
                for(int i = 0 ; i < 1000 ; i++);
            }
        }

        
        练习:
            编写一个流水灯程序

        
        

#include <reg52.h>

sbit LED_0  = P1^0;




int main()
{
	
	while(1)
	{
		LED_0 = 0;
	}
}


        
        作业:
            1、写出另一种流水代码

#include <reg52.h>

sbit LED_0=P1^0;
sbit LED_1=P1^1;
sbit LED_2=P1^2;
sbit LED_3=P1^3;
sbit LED_4=P1^4;
sbit LED_5=P1^5;
sbit LED_6=P1^6;
sbit LED_7=P1^7;

void delay(unsigned int t)
{
	unsigned int i,j;
	for(i=t;i>0;i--)
	for(j=100;j>0;j--);
}

main()
{
unsigned char w,i;
	while(1)
	{
		w=0xfe;
			for (i=0;i<8;i++)
		  {
			P1=w; 
			w<<=1;
			w=w|0x01; 
			delay(100);
	      }
	}
}

            2、试着用按键写一个功能函数,实现按键控制某个LED灯的亮灭
            
            

#include <reg52.h>

sbit LED_0 = P1^0;
sbit LED_1 = P1^1;
sbit LED_2 = P1^2;
sbit LED_3 = P1^3;
sbit LED_4 = P1^4;
sbit LED_5 = P1^5;
sbit LED_6 = P1^6;
sbit LED_7 = P1^7;

sbit KEY_1 = P3^3;
sbit KEY_2 = P3^4;
sbit KEY_3 = P3^6;
sbit KEY_4 = P3^7;

int main()
{

	if(KEY_1==1){
		 LED_0=0;
		 LED_2=0;
		 LED_4=0;
		 LED_6=0;
	   while(KEY_1==1);
     LED_0=~LED_0;
     LED_2=~LED_2;
     LED_4=~LED_4;	
     LED_6=~LED_6;		
	}
	
	if(KEY_2==1){
		 LED_0=1;
		 LED_2=1;
		 LED_4=1;
		 LED_6=1;

	   while(KEY_2==1);
		
     LED_1=~LED_1;
     LED_3=~LED_3;
     LED_5=~LED_5;	
     LED_7=~LED_7;		
	}
}



        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香自寒来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值