一周总结

2019-07-14 09:40发布

键盘扫描: .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) { }