我是靠谱客的博主 清脆月光,最近开发中收集的这篇文章主要介绍蓝桥杯——单片机学习(学习自检——流水灯),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

就是学习别人的博客,然后看看自己能独立打出来不。本来应该删掉的,可是毕竟是自己辛辛苦苦打出来的,舍不得 orz.

代码

(我的)

//led.c

#include "sys.h"

void LED_disp(u8 led){
	P0 = led;
	P2 = P2 & 0x1F | 0X80;
	P2 &= 0x1F;
}

//tim.c

#include "sys.h"

void ALL_Init(void){
	P0 = 0xFF;
	P2 = P2 & 0x1F | 0x80;       //关闭LED
	P2 = P2 & 0x1F | 0xE0;       //关闭数码管
	P2 &= 0x1F;
	
	P0 = 0;
	P2 |= 0xA0;                  //关闭蜂鸣器
	P2 &= 0x1F;
}

void Timer0Init(void){               //1ms@12.000MHz
	AUXR &= 0x7F;                      //12分频
	TMOD &= 0xF0;                      //配置为定时器0模式
	TH0 = (65536 - 1000)/256;          //0XFC
	TL0 = (65536 - 1000)%256;          //0X18
	TR0 = 1;                           //定时器开始计数
	TF0 = 0;                           //溢出标志位清零
	ET0 = 1;                           //运行定时器0中断
	EA = 1;                            //开启总中断
}

void Timer0_handle(void) interrupt 1{
	static u16 t;
	if(++t == 1000){
		led = _cror_(led,1);
		t = 0;
	}
}

//sys.h

#ifndef __SYS_H_
#define __SYS_H_

#include <stdio.h>
#include <STC15F2K60S2.H>
#include <intrins.h>

#ifndef u8
#define u8 unsigned char
#endif

#ifndef u16
#define u16 unsigned int
#endif

extern u8 led;

//led.c
void LED_disp(u8 led);

//tim.c
void ALL_Init(void);
void Timer0Init(void);

#endif

//main.c

//流水灯

#include "sys.h"
#include <stdio.h>
#include <STC15F2K60S2.H>

u8 led = 0xEF;

void main(){
	ALL_Init();
	Timer0Init();
	while(1){
		LED_disp(led);
	}

}

学习博客

@小默 haa—— 流水灯

问题

1、定时器不会写,没有背里面的各个参数,但是我会用!
(好吧,还是去背下吧,不然考试就gg了。)
2、intrins.h 不记得,去背去背!!!
3、_cror_函数的使用,也是忘记了这前后两条横线了,现在记住啦!
4、AUXR |= 0x80; 是1分频模式,1分频时,TL0和TH0里的参数要乘上12。
5、在头文件写了全局变量声明的,在main.c文件里一定要把那些相对应的变量写在main函数外面,作为全局变量。
6、TF0是溢出标志位,要清零;TR0是计数允许位,要置一。不要记混了。

最后

以上就是清脆月光为你收集整理的蓝桥杯——单片机学习(学习自检——流水灯)的全部内容,希望文章能够帮你解决蓝桥杯——单片机学习(学习自检——流水灯)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部