




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上武汉轻工大学 -现代微机原理与接口技术报告学号:姓名:王雪瑞班级:网工一班成绩: 2014 年 5 月 15 日 实验1 定时与中断接口程序设计实验项目:定时与中断接口程序设计实验日期:4月22日实验场地:东7-409实验环境: 硬件环境:PC机一台; 软件环境:操作系统不限,TURBO C+3.0。实验目的: 1学习定时器/计数器8253、并行I/O接口8255A在PC机中的电路连接方法;2学习使用TURBO C+对8253、8255进行编程操作;3熟悉拦截PC机中断向量的TC+ 编程方法。实验过程:1建立源文件启动TURBO C+3.0,建立Timer.CPP。保
2、存到D:/Timer.CPP;2设置TC工作目录选菜单Options/Directories,第1、2栏保持不变,第3、4栏填写您的文件存放目录。这样,TC生成的可执行文件就会存放到此工作目录下。3输入源程序#include <stdio.h> /支持标准输入输出,如printf()。#include <dos.h> /支持接口访问、中断向量操作函数#include <STDLIB.H> /支持exit()函数#ifdef _cplusplus /定义C+使用的中断函数标识符。 #define _CPPARGS .#else #define _CPPARGS
3、#endifint nTick=0,sec=0,flag=0;unsigned char sys_PB,my_PB;void interrupt far (*sys_int_08)(_CPPARGS); void interrupt far my_int_08(_CPPARGS) /8号中断,每55ms中断一次,由8253的0号定时器定时,并向8259 IRQ0申请中断 +nTick; if(nTick =1) outportb(0x61,my_PB); /开始鸣叫 else if(nTick =3) outportb(0x61,0x01); /停止鸣叫,PB1=0, PB0保持为1 else
4、 if(nTick>18) / 1second/55ms 近似等于18 flag=1; nTick=0; sec+; sys_int_08(); /调用系统的中断向量void main() unsigned int Time_up; printf("Please input Up Time(5-30): "); scanf("%d",&Time_up); printf("n"); if(Time_up<5 | Time_up>30) printf("Input Error!"); exit
5、(1); /结束程序 sys_PB=inportb(0x61); /读取PB口,内容 my_PB=sys_PB|0x03; /将PB口低2位(PB0,PB1)置1 /8253通道2,产生1KHz方波,送到扬声器,使扬声器发声 outportb(0x43,0xb6); /CW= B,通道2,先低字节,再高字节,方式3,二进制 outportb(0x42,0xa6); /low byte, outportb(0x42,0x04); /high byte,0x04a6=1190,f = 1.19MHz,out=f/1190=1000Hz sys_int_08=getvect(0x08); /保存系统
6、的中断向量 setvect(0x08,my_int_08); /设置系统向量 while(1) if(flag=1) flag=0; printf("%d ",sec); if(sec=Time_up) break; printf("Timer Up!nn");outportb(0x61,sys_PB); /恢复系统的PB口状态 setvect(0x08,sys_int_08); /恢复系统的中断向量4. 运行程序,并修改一些数据重新运行。实验结果及分析: 通过本次实验学习使用TURBO C+对8253、8255进行编程操作,我熟悉了8253、8255的
7、接口逻辑和它们的内部结构、工作原理。了解了8253、8255的工作方式,并熟练掌握了8259的工作原理。 实验2 MFC串行通信程序设计实验项目:MFC串行通信程序设计实验时间:4月29日实验地点:东7-409实验环境: 硬件环境:PC机一台 串行通信终接头一个 串行通信电缆一根软件环境:Windows7操作系统VC+6.0实验目的: 1了解MFC编写Windows应用程序的一般方法,熟悉Windows API 接口函数的使用;2熟悉定时器Timer( )函数、RS232 API接口函数的使用,两者之间的协调工作。实验过程:1建立基于对话框的MFC工程工程名为Scom,对话框的类(Class)
8、为CscomDlg,对应的头文件为ScomDlg.h,源程序文件为ScomDlg.cpp。 2. 建立串行通信接口(1)在ScomDlg.h文件中定义串行通信接口对象的句柄 class CScomDlg : public CDialog/ Constructionpublic:CScomDlg(CWnd* pParent = NULL);/ standard constructorHANDLE hCom; /自己添加的代码(2)在ScomDlg.cpp文件中的OnInitDialog()函数中创建串行通信接口BOOL CScomDlg:OnInitDialog() . / TODO: Add
9、extra initialization here hCom=CreateFile( "COM1",GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); /创建接口对象,返回句柄if(hCom=(HANDLE)-1) MessageBox( "创建串口1接口实例失败","未找到COM1口",MB_ICONSTOP|MB_OK ); return TRUE;DCB dcb; /定义DCB(设备控制块)结构,用于设置串口设备的属性和参数GetCommState(hCom
10、,&dcb); /先得到系统默认的DCB属性和参数BuildCommDCB("COM1: 1200, n,8,1", &dcb ); /再修改DCB的几个参数:1200bps,无奇偶校验,8数据位,1停止位SetCommState(hCom,&dcb); COMMTIMEOUTS ComTimeOut; /定义超时结构,用于设置串口读写的等待时间ComTimeOut.ReadIntervalTimeout=MAXWORD; /读间隔超时ComTimeOut.ReadTotalTimeoutMultiplier=0; /读总超时系数ComTimeOut
11、.ReadTotalTimeoutConstant=0; /读总超时常数ComTimeOut.WriteTotalTimeoutMultiplier=0; /写总超时系数ComTimeOut.WriteTotalTimeoutConstant=400; /写总超时常数SetCommTimeouts(hCom,&ComTimeOut); /按超时结构设置串口读写的等待时间SetupComm(hCom,1000,1000); /设置读写缓冲区PurgeComm(hCom,PURGE_TXCLEAR);/清空发送缓冲区PurgeComm(hCom,PURGE_RXCLEAR);/清空接收缓冲
12、区3. 用可视化工具在对话框窗体上添加按钮、编辑框. 按下表设置各控件的属性。控件名称VisibleIDMultilineAotoHscrollAotoVscrollWantRturnRead-Only发送按钮IDC_SEND发送编辑框IDC_SendTxt接收编辑框IDC_Receive 为上述控件加入变量。选View/ClassWizard,选Member Variables卡,按下图设置 4. 建立各控件的消息响应函数(1)为“退出”按钮建立消息响应函数,双击“退出”按钮,弹出对话框,点击确定。于是MFC自动在CscomDlg类中建立了“退出”按钮的响应函数OnCancel();请在该函
13、数中添加代码:void CScomDlg:OnCancel() / TODO: Add extra cleanup hereCloseHandle(hCom); /最后释放串口资源 (2)为“发送” 按钮建立消息响应函数,双击“发送”按钮,弹出对话框,点击确定。于是MFC自动在CscomDlg类中建立了“发送”按钮的响应函数OnSend ();请在该函数中添加代码:void CScomDlg:OnSend() / TODO: Add your control notification handler code hereCOMSTAT state; /定义串口状态结构,用于存放串口通信的状态DW
14、ORD BytesWritten; /定义存放实际发送了多少字节的变量int SendBytes; /定义应发送的字节数存放变量LPTSTR TxdBuff; /定义将发送的字符串UpdateData(TRUE); /将当前编辑框中输入的字符更新到m_SenTxt变量中SendBytes=m_SenTxt.GetLength(); /得到m_SenTxt变量中存放的字符数TxdBuff=m_SenTxt.GetBuffer(SendBytes); /使发送字符串指针指向m_SenTxtBOOL OK=WriteFile(hCom,TxdBuff,SendBytes,&BytesWrit
15、ten,NULL); /发送if(!OK) /发送失败ClearCommError(hCom,&BytesWritten,&state); /清除发送错误5. 为接收数据创建定时器每隔500ms自动检测是否有数据发来。如果有数据发来,则读取、显示传来的数据。(1)先在ScomDlg.cpp文件中的OnInitDialog()函数中创建定时器:BOOL CScomDlg:OnInitDialog()./ TODO: Add extra initialization hereSetTimer(1,500,NULL); /创建定时器hCom=CreateFile( "COM
16、1", GENERIC_READ|GENERIC_WRITE, .当程序退出时,应删除本定时器:void CScomDlg:OnCancel() / TODO: Add extra cleanup hereKillTimer(1); /删除定时器CloseHandle(hCom);/最后释放串口资源.(2) 再创建“定时时间到”消息响应函数。选菜单项View/ClassWizard,选Message Map卡,在Object IDs列表框中选CScomdlg,在Class Name列表框中选CScomdlg,在Messages列表框中选WM_TIMER,点击“Add Function
17、”、“Edit Code”。于是,在CScomDlg类中添加了OnTimer(UINT nIDEvent)函数,请输入代码:void CScomDlg:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultDWORD BytesRead, dwErrorFlags; /定义存放实际接收到多少字节的变量BYTE RxdBuff51; /定义存放接收到的字符的数组COMSTAT ComStat; ClearCommError(hCom,dwErrorFlags,ComStat); /读取串行设备的当前状态,获取接收缓冲区中已有的字节数 BytesRead =min(50,ComStat.cbInQue); /应该读取的数据长度 If(BytesRead) ReadFile(hCom,RxdBuff, BytesRead,&BytesRead,NULL); /试图接收BytesRead个字符 if(BytesRead>0) /实际收到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深入解析幼儿园数学试题及答案
- 物业秩序考试试题及答案
- 模拟IC面试题及答案
- 电商环境下的农业竞争试题及答案
- 联考英语试题及答案解析
- 家具行业设计中的用户行为研究与市场策略趋势探索试题及答案
- 辽宁职业学院《中国戏曲艺术》2023-2024学年第一学期期末试卷
- 江西环境工程职业学院《藏族简史》2023-2024学年第二学期期末试卷
- 天津开发区职业技术学院《英国文学概况》2023-2024学年第二学期期末试卷
- 环保课程考试题及答案
- 新北师大版八年级下册数学教案+教学计划大全
- 量子通信平台下的宇宙观测-全面剖析
- 2025-2030中国生物质能发电行业市场现状供需分析及投资评估规划分析研究报告
- 固体废物运输合同协议
- 2025年全国防灾减灾日班会 课件
- 普法宣讲杨立新-民法典-人格权 编【高清】
- 2023中国电子科技集团有限公司在招企业校招+社招笔试参考题库附带答案详解
- 2025年上半年浙江省杭州市交通运输局所属事业单位统一招聘20人易考易错模拟试题(共500题)试卷后附参考答案
- 10.2 保护人身权(课件)-2024-2025学年七年级道德与法治下册
- 福彩考试题库目录及答案
- SL631水利水电工程单元工程施工质量验收标准第1部分:土石方工程
评论
0/150
提交评论