• 第一个LED灯


    第一个LED

    话不多说放效果图

    实现了流水灯效果(D2常亮应该是板子问题导致的)

    原理图

    HC6800-MS原理图(带引脚号)

    image-20211016105234641

    电阻用于限流,防止电流过大烧毁LED

    LED正极已经接到 VCC(高电平) 了

    现在只要 LED 的负极接低电平就可以产生电流了

    共阳极电路

    代码

    流水灯需要不断改变寄存器P2,让低电平的位不断游走。

    核心代码

    while(1)
    		{
    				curr = (curr << 1) > 0 ? (curr<<1) : 1;
    				P2 = ~curr;
    				Delay1000ms();
    		}
    
    

    完整代码:

    #include <REGX52.H>
    
    #include <INTRINS.H>
    
     
    void Delay1000ms();		//@12.000MHz
    
    
    void main(void)
    {
    		
    		unsigned char curr;
    		P2 = 0;
    		curr = 1;
    	
    		while(1)
    		{
    				curr = (curr << 1) > 0 ? (curr<<1) : 1;
    				P2 = ~curr;
    				Delay1000ms();
    		}
    	
    }
    
    void Delay1000ms()		//@12.000MHz
    {
    	unsigned char i, j, k;
    
    	_nop_();
    	i = 8;
    	j = 154;
    	k = 122;
    	do
    	{
    		do
    		{
    			while (--k);
    		} while (--j);
    	} while (--i);
    }
    
    

    警告

    *** WARNING L10: CANNOT DETERMINE ROOT SEGMENT

    这个警告是由于缺少main()函数

    输出HEX文件

    image-20211016110649646

    如果F7无法生成HEX文件,就需要在 KEIL 5 里面设置一下输出目标文件。

    正在检测目标单片机

    image-20211016112201055

    这个问题,重启两次单片机应该可以解决。

    通过软件模拟延时

    image-20211016114745447

    image-20211016114437255

    需要包含_nop()的定义

    在 INTRINS.H 文件

    image-20211016115007773

  • 相关阅读:
    如何清除el-dialog中的表单验证
    购物车小球飞入动画
    node的应用场景
    如何在Ubuntu Server 18.04 LTS中配置静态IP地址
    在Ubuntu上启用和禁用NetworkManager
    gcc常用命令
    cmake入门
    模拟实现pwd命令
    模拟实现ls命令
    qmake生成的Makefile在make install时遇到的一次错误
  • 原文地址:https://www.cnblogs.com/studentWangqy/p/15415708.html
Copyright © 2020-2023  润新知