概述
就是学习别人的博客,然后看看自己能独立打出来不。本来应该删掉的,可是毕竟是自己辛辛苦苦打出来的,舍不得 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是计数允许位,要置一。不要记混了。
最后
以上就是清脆月光为你收集整理的蓝桥杯——单片机学习(学习自检——流水灯)的全部内容,希望文章能够帮你解决蓝桥杯——单片机学习(学习自检——流水灯)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复