《30天自制操作系统》学习笔记(八)

一、制作FIFO缓冲区
该缓冲区用于提高中断处理程序的处理速度,中断处理程序只需将数据写入缓存区中就执行结束
定义
struct FIFO8 {
    unsigned char *buf;
    int p, q, size, free, flags;
};
buf为缓存区地址
p,q分别为写入、读取指针
size表示缓存区的大侠
free表示缓存区中没有数据的字节数
flags记录是否溢出

二、获取按键编码
void inthandler21(int *esp)
{
    unsigned char data;
    io_out8(PIC0_OCW2, 0x61);    /* IRQ-01受理已经完成 */
    data = io_in8(PORT_KEYDAT);    //PORT_KEYDAT=0X0060
    fifo8_put(&keyfifo, data);    //向缓存区写入数据
    return;
}

三、获取鼠标信息
void inthandler2c(int *esp)
/* PS/2マウスからの割り込み */
{
    unsigned char data;
    io_out8(PIC1_OCW2, 0x64);    /* IRQ-12受理完成 */
    io_out8(PIC0_OCW2, 0x62);    /* IRQ-02受理完成 */
    data = io_in8(PORT_KEYDAT);
    fifo8_put(&mousefifo, data);    //向缓存区写入数据
    return;
}

四、总结
1.书中中断的处理过程就是从相应的端口读取数据,并将数据写入到缓存区中
2.所有缓存区数据处理的工作都是在主函数中完成的
3.代码中出现的硬件编号是约定好的,阅读时不应过于纠结,当做固定写法
4.使用鼠标时必须先让鼠标控制电路有效,再激活鼠标
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值