C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断

上传人:w****i 文档编号:92479359 上传时间:2019-07-10 格式:PPT 页数:19 大小:161.50KB
返回 下载 相关 举报
C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断_第1页
第1页 / 共19页
C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断_第2页
第2页 / 共19页
C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断_第3页
第3页 / 共19页
C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断_第4页
第4页 / 共19页
C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断》由会员分享,可在线阅读,更多相关《C语言在测量和控制中的应用 教学课件 ppt 作者 王彤第9章 软件中断(19页珍藏版)》请在金锄头文库上搜索。

1、第9章 软件中断,哈尔滨工业大学航天学院,C语言在测量与控制中的应用系列课件,9.1软件中断的概念,软件中断是由中断指令产生的中断,汇编语言的格式是: INT 中断类型号 软件中断包括DOS和中断BIOS中断。,DOS中断的中断服务程序在DOS磁盘操作系统的文件中。 INT 20H 程序正常退出 INT 21H DOS功能调用 INT 22H 结束退出 INT 23H Ctrl-Break退出 INT 24H 出错退出 INT 25H 绝对读盘 INT 26H 绝对写盘 INT 27H 驻留退出,BIOS中断,中断服务程序固化在BIOS中。 INT 10H 显示器I/O INT 13H 磁盘I

2、/O INT 14H RS-232串口中断 INT 16H 键盘I/O INT 17H 打印机I/O INT 1AH 时钟服务 INT 1BH Ctrl-Break中断 INT 1CH 定时中断,9.2 DOS功能调用,调用过程: 1.AH 功能号 2.设置入口参数 3.执行软中断 INT 21H 4.出口参数可返回信息,例:02H号功能调用,显示一个字符。 入口参数: AH 功能号 DL 字符的ASCII码 程序: MOV AH , 2 MOV DL , * INT 21H,Inter86系列CPU 的寄存器,15 8 7 0,FLAG,CS DS SS ES,AH AL AX BH BL

3、BX CH CL CX DH DL DX,寄存器从16位扩展到32位的过程。,intdos( ),通用DOS功能调用函数 int intdos(union REGS *in ,union REGS *out ) ; REGS 是C编译系统定义的联合数据类型,定义包括在dos.h中。,struct WORDREGS unsigned int ax,bx,cx,dx,si,di,cflag ; ; struct BYTEREGS unsigned char al,ah,bl,bh,cl,ch,dl,dh ; ; union REGS struct WORDREGS x; struct BYTERE

4、GS h; ;,联合的两个成员项是结构, 一个对应16位寄存器, 结构变量 x ; 另一个对应8位寄存器, 结构变量 h 。 返回值是AX中的内容。,intdos( )的参数,in和out是指向REGS联合数据类型的指针。 in用于相函数传递有关寄存器的值; out用于接收调用后寄存器的状态值。 返回值在AX中,若调用出错,进位标志cflag 置1,AX中是错误码。 使用该函数时要说明一个联合变量。,以2号功能调用,显示字符为例: union REGS r ; r.h.ah=2; r.h.dl=8; intdos( ,intdosx( ),有些DOS功能调用的入口、出口参数涉及段寄存器,如:C

5、S,DS,SS,ES。可使用通用DOS功能调用函数intdosx()。 int intdosx(union REGS *in,union REGS *out,struct SREG *segres);,*segres是指向SREGS 结构类型的指针。 SREGS是C编译系统定义的结构数据类型,它的定义包括在dos.h中。 struct SREGS unsigned int es,cs,ss,ds; ;,9.3 通用软中断接口函数int86( )和int86x( ),int int86(int intr_num,union REGS *intregs,union REGS *outregs);

6、intr_num中断类型号 inregs 指向REGS数据类型的指针,用于向函数传递有关寄 存器的值。 outregs 指向REGS数据类型的指针,用于接收中断执后, 各寄存器的状态。,若参数涉及段寄存器,可使用int86x( ) 函数, int int86x (int intr_num,union REGS *intregs,union REGS *outregs, struct SREGS *segres);,INT 10H,INT 10H是显示器中断,有0 15 共16个功能。,2号功能:置光标位置。 入口参数: AH 2(功能号) DH 行号 DL 列号 BH 页号,9号功能:显示字符

7、及属性。 入口参数: AH 9 AL 字符的ASCII码 CX 重复次数 BH 页号 BL 属性,属性字节,背景色,闪烁 1:闪烁 0:不闪,亮度 1:加强 0:正常,前景色 若加强亮度 000 黑 灰 001 蓝 浅蓝 010 绿 浅绿 011 青 浅青 100 红 浅红 101 绛 浅品红 110 褐 黄 111 浅灰 白,程序举例,#include void main(void) union REGS r; r.h.ah=2; r.h.bh=0; r.h.dh=12; r.h.dl=30; int86(0x10, ,9.4 伪变量与产生软中断函数,使用伪变量可以对寄存器进行操作 unsi

8、gned int 型的伪变量:_AX, _BX, _CX, _DX, _SI, _DI, _BP, _SP, _FLAG, _CS, _DS, _SS, _ES 。 unsigned char型的伪变量:_AL, _AH, _BL, _BH, _CL, _CH, _DL, _DH 。,伪变量可看作全局变量,不能进行取地址操作。 寄存器在程序执行过程中频繁使用,伪变量赋值后必须马上使用,若执行其它程序寄存器中的数据可能被冲掉。,产生软中断函数,void geninterrupt( int intr_num) ;由dos.h头文件说明。,其中:intr_num 中断类型号,例如,使用DOS功能调用

9、的2号功能 _AH=2; _DL=8 ; geninterrupt( 0x21) ;,INT 1AH,0号功能 读时钟 1号功能 置时钟 2号功能 读实时钟 6号功能 置报警时间 7号功能 清除报警,2号功能 读实时钟 入口参数: AH2 出口参数: CH:CL=时:分(BCD码) DH:DL=秒:1/100秒 (BCD码),8254 通道0,也叫日时钟,CMOS实时钟,有关时间、日期的结构数据类型,struct time unsigned char ti_min; 分 unsigned char ti_hour; 小时 unsigned char ti_hund; 1/100秒 unsign

10、ed char ti_sec; 秒 ,struct date int da_year; int da_day; int da_mon; ,用于 gettime(),settime(),getdate(),setdate()函数。,设置DOS系统时间函数 void settime( struct time *t); settime()函数将系统时间设置为指针t所指向的time型结构变量里的值,由头文件dos.h说明。,日时钟与实时钟对表,由实时钟的时间设置日时钟的时间。 用 INT 1AH 读实时钟的时间(BCD码) 转换成10进制数后,用settime()赋给日时钟,BCD码:用4位二进制数表

11、示1位十进制数。,BCD码十进制数:十位上的数值10 + 个位上的数值 高4位的数值10 + 低4位上的数值,子程序,void rsettime(void) unsigned char cl,ch,dl,dh; struct time t; _AH=2; geninterrupt(0x1a); ch=_CH;cl=_CL;dh=_DH;dl=_DL; t.ti_hour=10*(ch4)+(ch ,思考题,1. DOS功能调用的第5号功能是打印机输出,入口参数是将要打印字符的ASCII码放入DL寄存器,打印字符9的汇编语言程序如下: MOV AH , 5 MOV DL, 39H INT 21H 其中 39H是字符9的ASCII码 试用3种方法写出执行该功能的C 语言程序。,2.能否利用DOS功能调用的第5号功能控制步进电机的运动?试试看。,3.能否利用BIOS中断控制步进电机的运动?,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号