2010年第11期 福 建 电脑 209 C语言在微机原理与接口技术课程中的应用 刘林真 (福州大学阳光学院电子信息工程系福建福州350015) 摘要:本文提出将C语言程序设计引入微机原理与接口技术的实验教学中。以16位微机接口实验箱为基 础,利用汇编和C分别设计并实现了具有计件功能的综合实验,巩固并提高了学生利用c语言进行的综合 设计的能力,激发了学生的创新能动性和学习热情,对后续课程的学习打下基础。 关键词:C语言,微机原理与接口技术,实验教学改革 1、引言 课程中实际用到的却不多.学生普遍反应对C语言遗 《微机原理与接口技术》是各高校电子信息类专业 忘率太高.对大四的毕业设计以及以后的工作带来不 的一门专业课.同时也是一门实践性和应用性很强的 良的影响 能否将基础又非常重要的C语言贯穿整 课程。经过理论和实践两方面的教学,使学生掌握微型 个大学四年,让学生能循序渐进的学习C语言.利用C 计算机的基本工作原理.汇编语言程序设计的基本方 语言编制各种程序呢? 法.微机系统与输入输出设备的典型接口电路和接口 《微机原理与接口技术》这门课程的实践性较强, 技术,并能综合运用软、硬件技术分析和解决实际问 实践的内容大致是选用8086CPU、8255A、8251、8253、 题。该课程是学生学习《单片机原理与应用》、《嵌入式 8259、8237、A/D及D,A等通用接口芯片作为l6位微 系统开发》等相关课程的前序基础课。 机实验教学的主要内容.包括设计性实验和综合应用 2、存在的问题 性实验两个部分.所用的编程语言是8086CPU的汇编 2.1课程改革 指令系统。该汇编指令只针对8086及以上.适用的场 由于《微机原理与接口技术》课程的重要性,教学经 合较为狭窄,以后的单片机以及ARM的学习只能利用 验丰富的教师纷纷提出了教学改革.主要包括理论教学 其编程思想.具体的指令则完全不一样.而指令的记忆 改革和实验教学改革。主要观点如下:在理论教学方面. 将是一件枯燥又无意义的”体力劳动” 如果能用C语 改革授课内容.并对授课内容精心组织和安排。本门课 言辅助微机实验.既巩固了C语言的学习.而且提高了 程信息量大、知识点多,而课时有限,要把所有的内容讲 学生的学习兴趣,增加就业的信心。 完是不可能的 这时需要对所讲授的内容进行精心组织 3、问题的解决 和安排,做到重点突出、主次分明、逻辑清晰,有针对性 高校电子信息专业都会在大一阶段开设一门高级 做到部分内容精讲、部分内容略讲、部分内容可以不讲。 语言课程。C语言作为目前世界上最流行、使用最广泛 在教学内容的组织方面,考虑微机本身内容体系同时. 的面向过程的高级程序设计语言而受到大家的青睐。 兼顾创新意识与创新才能培养的需要[1] 使用C语言明显优于其它高级语言.许多大型应用软 在实验教学方面,将理论课和实验课穿插进行、紧 件都是用C语言编写的 很多公司对C语言高手”情 密衔接。实验内容体现梯度和层次,注重打牢基础,侧 有独钟”。将C语言引进微机课堂,是对《微机原理与接 重应用,兼顾分级教学。精心设计实验内容。实验教学 口技术》课程的重大改革,是对老师和学生的一种新的 的目的是能加深和提高学生对课程内容的理解.为理 挑战,当然,其作用是显而易见的: 论教学提供有力的支撑作用:能够打牢学生汇编语言 1、将高级语言(C语言)和低级语言(汇编语言)进 程序设计的基础:能培养学生的创新思维和提高学生 行面对面的比较,提高学生对知识的消化和理解力。 的微机综合应用能力【2】 2、巩固和提高C语言编程能力,为后续的单片机、 2-2课改忽略的内容 ARM的学习、实验以及对以后的就业打下良好的基 我们知道.电子信息工程专业的学生的培养目标 础。 是具备系统的理论基础和扎实的硬件、软件的专业知 3、提高学生的学习主动性,为创新实验的设计和 识,具有较强的工程实践能力和动手能力 毕业后能在 开发提供了良好的平台 微机和单片机应用、嵌入式系统的设计和开发方面崭 4、C语言在微机实验教学中的具体应用: 露头角。而具体的应用开发很大程度是基于C语言。学 4.1微机接口技术实验箱简介 生在低年级阶段都系统的学习了C语言.但在后续的 《微机原理与接口技术》是实践性非常强的课程, 210 福建电一脑 2010年第11期 选择一款合适的实验设备不但能完成课程要求的验证 状况.设计了基于微机原理实验箱的生产流水线上 性实验.更为创新型实验提供了平台。清华大学科教仪 的工件计数系统.该系统综合运用了8253定时器、 器厂生产的TPC—USB实验箱采用了USB接口模块, 8255并行接口、8259A中断控制器、蜂鸣器等功能芯 实现生产线上的工件计数,每通过100个工件,扬 形成了一套完整的USB接口的微机接口实验系统。该 片,系统适应当前高等院校所开设的微机接口技术课程的 声器便发出频率为1000Hz的音响信号.并持续5秒时 提 实验.同时也提供了最新接口USB的实验,使学生在 间州 这类创新型实验可以激发学生的学习能动性,校学习期间不仅有机会接触常规接口.同时有机会接 高学生面对实际问题的分析判断、设计应用能力。 触新型的接1:3.为学生们今后从事微机开发应用打下 l、设计要求: 工件遮挡光源.是光敏电阻阻值增加,输出一个正 基础f31。TPC—USB实验箱同时提供了功能强大的软件 集成开发环境.可以方便的对汇编程序进行编辑、编 脉冲给8253的计数器0提供脉冲。计数器0工作在方 译、链接和调试,但是不能直接进行C语言调试。用户 式0,当100个工件通过后。计数器0减1计数至0,在 通过手动安装Visual C+十的编译和调试器即可以该问 其输出端OUT0产生一个正跳变信号,用此信号作为 题。 8259A中断请求信号: 在中断服务程序中.由8255A的PA0启动8253计 4.2汇编语言以及C语言在微机实验中的应用以及对 比 匹==, 数通道l工作.由OUT1端输出1000Hz的方波信号给 扬声器驱动电路.持续5秒钟后停止输出。 计数通道1工作于方式3(方波发生器).其门控 信号GATE1由8255A的PA0控制.输出的方波信号 经过驱动电路送给扬声器。 2、硬件设计: 由于采用了PC机和微机原理实验箱.硬件电路设 计相对比较简单.主要利用微机原理实验箱上的 8255并行口、8253定时器、8259A中断控制器、蜂鸣器 等功能芯片以及光敏电阻、三极管等单元电路。经一定 的组合后构成了该系统,硬件原理框图如图1所示。 3、软件设计流程图: 2∞J卜2o州 图1硬件原理框图 软件设计模块较为简单.主要是顺序程序设计思 路。即利用8253对工件进行计数,每通过100个工件。 就通过OUT0端向8259A申请中断.而中断服务子程 序主要将8255A中PA0口置位.控制8253计数器1 工作.计数器1的输出OUT1将会驱动蜂鸣器按额定 频率工作(计数器1的计数初值应为2000)。程序设计 流程框图如图2所示 4、利用C语言进行程序设计 鬻嚣 ZC臂t ・、 中 藤 秀疆序】 出 裔宅平 l’.r◆ ● 要害羲鼹棼疆序 鼻蔽球卜z盯l ◆ 8=琴§柱,童绛‘圭二. PJ §£丑・方j{∞ ,l 嚣嚣拈 妫 始化数鼹 ll ●计数器l送 争 利用C语言进行编程前.必须定义几个常见的函 数: .Iv 期朔瞻化礴oll 1.r 葺;计数嚣。蛔}。蛔}僵 僵BOOL Sta ̄up0:查询TPC—USB微机接口实验装 停止计羹蔓磐 黯lI 1 rl写计数 器。 初值 r置是否可用 -void Cleanup0:关闭设备。 搅结柬碡,令 BOOL PortReadByte(DWORD address,BYTE *pdata1:读TPC—USB某个的IO端口值。 ・BOOL PortWriteByte(DWORD address,BYTE da— ta1:将给定值写入TPC—USB所指明的IO端口。 ・图2程序设计流程框图 ・一直以来微机原理的实验内容主要以验证性实验 BOOL Enablelntr0:将微机实验装置的中断输入 设为有效。 ・为主.验证理论课的教学内容。这种以验证性实验为 BOOL Disablelntr0:将微机实验装置的中断输入 主、基于单个功能芯片的实验教学很难培养学生的科 设为无效 技创新能力、设计软硬件能力和全局观念。针对这 BOOL RegisterlSR(ISR_ROUTINE pfunelSR):注 ・2010年第11期 福建电脑 MOV AL,OOH 211 册中断服务程序。 相应的代码实现如下: void nmjnOf !st ̄-t.pO){ ;打开设备 prlntf(”ERROR:Open Device Error!\rI”); OUT DX,AL MOV AL,20H ;写计数初值低8位 6、应用于微机实验的两种编程语言对比 通过以上两点,我们发现:利用汇编语言编程。必 须熟知汇编指令.每条指令都须严格符合汇编语言的 return;} PortWriteByte(0x287,0x8B);初始化8259A r ̄eglsterLocalISR(MylSR);打开中断.其中MylSR为中断服务程序 入口地址 规范,对编程人员的要求较高。但是每条指令直接面对 硬件。让学生对硬件知识的了解更加深刻。利用C语言 Enablelntr0:允许中断 PortWfiteByte(0x280,0xa0);初始化8255 PortWriteByte(0x28B,0xl0);初始化8253计数器0 编程,代码简洁,易于阅读;思路开阔,学生自由发挥的 能力大大提高。更重要的是让电子信息专业的学生从 大一一直到大四甚至到以后的工作.都能一直在用C f void MyISR0{ 编程,熟悉C编程,巩固C编程,灵活应用C编程,会 PortWfiteByte(0x280.0x55);PA0输出高电平 后续的专业课打下扎实的基础 PortWriteByte(0x28B.0x77):初始化8253计数器1 5、结语 PortWriteByte(0x289,0x7D0);送计数初值2000 本文将C语言程序设计引入到《微机原理与接口 Sleep(5000):延时5秒 Enablelntr0:结束中断 技术》课程教学中,结合TPC—USB实验箱的硬件资源, } 利用汇编语言以及C语言分别设计并实现了一个综合 5、利用汇编语言进行程序设计 性的微机原理实验。通过分析比较,将C语言引入这类 利用汇编进行程序设计.相应的源代码就相对复 课程实验中.不仅加深了学生对微机硬件的感性认识. 杂一点。其中主要包含:8259、8253、8255初始化模块, 增加了学习的兴趣,而且锻炼提高了学生的设计、实现 中断服务子程序模块、延时子程序模块。8259、8253、 能力,激发了学生的实践热情。这项举措是一次大胆的 8255初始化模块较为简单.对应相应的初始化端口每 创新.但我们相信这将是微机原理实验教学过程中一 位的意义.结合实际需要.找到相对应的端口地址通过 个新的发展思路和方向 输入输出指令(IN/OUT)进行实际赋值。下面主要提供 中断服务子程序模块的汇编代码: 参考文献: MyIsR PROC NEAR [1】侯宝生.”微机原理与接口技术”课程教学改革创新探讨U】.教 MOV DX.280H 改纵横。2009(2):60-61. MOV AL,01H:8255A的PAO输出高电平, 【21焦纯,卢虹冰.论”微机原理与接口技术”的课程设置和改革O】. OUT DX.AL 价值工程.2010(2):210—213. M0V DX.28BH 『31清华大学科教仪器厂:TPC—USB教师实验指导书. MOV AL.Ol110111B:8253计数通道1初始化 【4】杨居义.微机原理与接1:7技术项目教程【M】.北京:清华大学出 OUT DX,AL ;方式3,BCD计数 版社.2010. MOV DX,289H :8253计数通道l地址 (上接第214页) 参考文献: 2009,(33) 【1】谭恒松.c≠≠程序设计与开发[M】.北京:清华大学出版社, [3】赵爱美.C≠≠教学中的实践与探讨Ⅱ】.电脑知识与技术(学术 2010. 交流),2007。(22) [2】沈蕴梅.《c≠≠程序设计》教学改革之初探卟科技信息, (上接第215页) 而是采用学生交图像设计的作品形式。作品内容不限, 中学到知识,又能将知识运用到生活中,甚至可能成为 可以是处理自己的生活照,可以作各种贺卡.可以是广 赚钱的本钱。 告创意,要求主题明确。内容新颖,运用课程所学到的 多种技巧,比如调色、蒙版等。作品的存储格式应为分 参考文献: 层的psd格式.以此来辨别是否是自己所作.拒绝从网 [1徐杏芳.1】”计算机动画制作”公选课教学探讨Ⅱ】.电脑知识与技 上照搬照抄,从而体现学生对知识的综合运用能力。 术,2010,6(25):7108. 5、小结 【2】刘媛,李冰立。白华.案例教学法在公选课Photoshop上的应 经过实践,经过对《图形图像处理》公选课教学方 用Ⅱ】.软件导刊,2009,10:21. 法的改进,取得了较好的课堂效果.学生既能从公选课