一周总结

键盘扫描:

.c文件:

#include "bsp.h"

sbit K1 = P0^0;

sbit K2 = P0^1;

unsigned char keyvalue = 0;

void bsp_keyscan(void)

{

if(K1 == 0)

{

 keyvalue = 1;

}

if(K2 == 0)

{

keyvalue = 2;

}

}

sbit定义变量名字 让其等价于某个端口

即这个端口获取到的值和这个变量值相同

Unsigned char 数据范围在0-256

Unsigned int 数据范围在 0-65536

函数声明指定好返回值(没有就用void)、指定好传入的参数类型(没有就用void

中断:

使用中断有哪些优点?

1. 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

2.实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

3.可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

IE是中断寄存器:里面包含了 EX0(开启int0中断),

ET0,(开启定时计数器0中断)IT0{=0:下降沿触发

= 1 :电平触发}

EX1(开启int1中断),

ET1,(开启定时计数器0中断)

ES,(打开串口中断)

EA(允许所有中断)

初始化Int(外部中断)的.c文件:

#include "bsp.h"

void int0init(void)

{

IT0 = 1; //下降沿触发

EX0 = 1;//打开外部中断

EA  = 1; //允许所有中断

}

void int1init(void)//同上

{

IT1 = 1;

EX1 = 1;

EA  = 1;

}

void ISR_INT0(void) interrupt 0    // 写法标准就是这样int0   t0    int1    t1    s

{ //外部中断0定时计数器0外部中断1定时计数器1串口中断

P1 = 0x55;

}

void ISR_INT1(void) interrupt 2    // int0   t0    int1    t1   s分别代表interrupt 01234

{

P1 = 0xAA;

}

根据中断的说明进行程序的书写

同样定时计数器中断初始化的.c文件:

#include "bsp.h"

#define FOSC 11059200L   //告知使用的脉冲频率为11.0592MHZ

#define TOMS 65536 - FOSC/12/1000 //一秒定时中断的初始值

//计数到65536就会产生溢出中断  FOSC/12/1000次正好是一毫秒

unsigned int count = 0;

sbit LED = P1^0;

void timer0init(void)

{

TMOD |= 0x01;//设置定时计数器的工作模式:模式1:0000 0001

TL0 = TOMS;

TH0 = TOMS>>8;//载入计数初值,高八位右移八位赋值给TH

ET0 = 1; //打开定时计数器0中断

EA  = 1; //允许所有中断

TR0 = 1; //允许溢出中断

}

void ISR_timer0(void) interrupt 1

{

TL0 = TOMS;

TH0 = TOMS>>8;//每次都载入计数初值

count++;

if(count == 1000)//计数到一秒的时候

{

count = 0;

LED = ~LED;

}

}

void timer1init(void)

{

}

猜你喜欢

转载自blog.csdn.net/qq_38313246/article/details/79189063