一周总结

66 篇文章 1 订阅
6 篇文章 0 订阅

键盘扫描:

.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)

{

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值