欢迎来到天天文库
浏览记录
ID:41033088
大小:43.59 KB
页数:8页
时间:2019-08-14
《内核和设备驱动编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、内核和设备驱动编程一、实验目的学习linux操作系统下内核程序的编写和应用;学习8255和8253等可编程芯片的编程控制方法;实现通过控制8255和8253来控制主板的扬声器发声。二、实验原理1、定时器/计数器8253简介Intel8252是微计算机系统中常用的定时/计数器,作为系统的硬件时钟设备在系统,它的内部有3个完全独立的16位计数器,而且每个计数器又有6中工作方式,可按二进制或十进制计数,每个计数通道都可随时设置或改变计数初值。8253在系统中分配的端口地址为40H~43H。读写操作其功能表如下:CSWRRDA1A0操作PC机地址00100写入计数器0初值40H00101写入
2、计数器1初值41H00110写入计数器2初值42H00111写控制字43H01000读计数器0当前计数值40H01001读计数器1当前计数值41H01010读计数器2当前计数值42H控制字控制每个计数器的工作方式和计数方式,控制字寄存器的信息只能写入,不能读出。如下表:D7D6D5D4D3D2D1D0计数器选择:00=计数器0,01=计数器1,10=计数器2,11=回读(8254)计数器读写方式:00=计数器锁存,01=仅读写低8位,10=仅读写高8位,11=先读写低8位后读写高8位工作方式设置:000=方式0,001=方式1,010=方式2,011=方式3,100=方式4,101=
3、方式5计数方式:0为二进制计数,计数范围为0~65535,1=BCD方式,计数范围为0000H~9999H,工作方式8253三个计数器均有六个不同的计数/计时方式,介绍如下:•方式0——计数结束产生中断•方式1——可编程单稳态输出方式•方式2——频率发生器/分频器•方式3——方波发生器•方式4——软件触发的选通信号发生器•方式5——硬件触发的选通信号发生器PC中8253的作用早期PC机中,8253作为系统的硬件时钟设备。8253在系统中占用40H~43H端口。三个定时器/计数器的时钟输入均为1.19MHz,各自承担以下功能:•T/C0:系统的日时钟,初始化为工作方式3,计数初值为0•
4、T/C1:动态存储器刷新时钟,初始化为工作方式2,计数初值为12H•T/C2:控制系统的扬声器,产生声音信号。它的控制端GATE2和扬声器前均接有控制信号,这些控制信号来自可编程I/O接口芯片8255的PB0和PB1。8255的初始化已将B口设为方式0输出。显然,T/C0和T/C1在系统中的作用比较重要,随意改动会导致系统错乱甚至崩溃。本次实验即控制T/C2,通过控制它来控制扬声器发声。较新的PC中已经不存在独立的8253等芯片,而是把它们集成在一块芯片中,但其控制方式在程序员看来仍然和控制独立芯片一样。2、可编程并行接口8255A简介并行接口可分为硬线连接接口和可编程接口:硬线连接
5、接口是直接使用导线将外设连接到主机,其工作方式和接口功能不能通过软件编程来实现;若可通过编程来实现,则就是可编程并行接口,如常用的8255。Intel8255A是一种通用的可编程并行I/O接口芯片,他有三个输入输出接口A口、B口和C口。8253的初始化已将A口设置为键盘输入端口,B口设置为方式0输出,本实验主要通过8255A的B口的低两位PB0和PB1来控制8253和扬声器的开关。个人计算机为8255A分配的端口为60H~63H。控制字用于控制8255A各个端口的工作方式和端口的输入/输出,具体如下D7D6D5D4D3D2D1D01A口方式A口C口7~4B口方式B口C口3~0特征位0
6、0=0方式01=1方式02=2方式0=输出1=输入0=输出1=输入0=0方式1=1方式0=输出1=输入0=输出1=输入工作方式可编程并行接口芯片有三种工作方式,可适用于CPU和I/O接口的多种数据传送方式。具体如下:•方式0——基本的输入/输出方式•方式1——选通输入输出方式•方式2——双向传输方式PC端口,当工作在方式1、2时,部分引线分配为专用联络信号。音符和频率的对应表:音阶1234567低音131147165175196220247中音262294330370392440494高音5235876596987848809873、内部电路原理图如上图所示,8253通道2的计数由8
7、255A的PB0控制,当PB0输出高电平时,使门控GATE2为高电平。此时,8253通道2允许计数,故通道2的输出方波受PB0的控制,从而可控制扬声器的音调高低。通道2的输出能否对扬声器产生持续控制还决定于8255A的PB1,当PB1为“0”时,OUT2不能通过“与门”;反之,则可通过“与门”来控制扬声器。所以,扬声器发音时间的长短取决于8255A的PB1信号。另外,CPU可通过读8255A的C口,得知8253通道2的状态和扬声器驱动器的状态。一、实验过程
此文档下载收益归作者所有