03 - 4个LED指示灯的流水灯

电路分析

  • J15接上跳线帽。
  • D1负极接STC8H8K64U的P0.3,D2负极接STC8H8K64U的P0.2,D3负极接STC8H8K64U的P0.1,D4负极接STC8H8K64U的P0.0。

代码

  • config.h
/**
 * 单片机系统的参数配置 
 * 
*/

#ifndef _CONFIG_H

#include "STC8H.H"

typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
typedef signed char int8;
typedef signed int int16;
typedef signed long int32;

#define D1 P03
#define D2 P02
#define D3 P01
#define D4 P00

#endif
  • main.h
#ifndef _MAIN_H
#define _MAIN_H

#ifndef _MAIN_C

#endif

void Delay200ms(void);

#endif
  • main.c
#define _MAIN_C
#include "config.h"
#include "main.h"

void main()
{
	P0M1 = P0M1 & 0xF7;		// 四个IO口都配置为推挽输出
	P0M0 = P0M0 | 0x08;
	
	P0M1 = P0M1 & 0xFB;		
	P0M0 = P0M0 | 0x04;
	
	P0M1 = P0M1 & 0xFD;		
	P0M0 = P0M0 | 0x02;
	
	P0M1 = P0M1 & 0xFE;		
	P0M0 = P0M0 | 0x01;
	
//	P0M1 = P0M1 & 0xF0;		// 四个IO口都配置为推挽输出
//	P0M0 = P0M0 | 0x0F;
	
	P0 = P0 | 0x0F;			// 四个LED灯都不亮
	
	while (1)
	{
		D4 = 1;
		
		D1 = 0;
		Delay200ms();
		
		D1 = 1;
		D2 = 0;
		Delay200ms();
		
		D2 = 1;
		D3 = 0;
		Delay200ms();
		
		D3 = 1;
		D4 = 0;
		Delay200ms();
	}
}

void Delay200ms(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

	i = 12;
	j = 57;
	k = 122;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值