全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章 输入/输出(I/O)模块1 I/O端口作为输出源程序代码:(1) 所需的复位和中断向量定义文件“vectors.asm”.title vectors.asm.ref _c_int0,_nothing.sect .vectorsreset: b _c_int0int1:b _nothingint2: b _nothingint3:b _nothingint4:b _nothingint5:b _nothingint6:b _nothing(2) 主程序/ 该程序用于实验演示模板上的8个LED的循环显示#include register.h / 初始化子程序initial() asm( setcSXM);/ 抑制符号位扩展asm( clrcOVM);/ 累加器中结果正常溢出asm( clrcCNF);/ B0被配置为数据存储空间asm( setcINTM);/ 禁止所有中断*SCSR1=0x81FE;/ CLKIN=6M,CLKOUT=4*CLKIN=24M P20*WDCR=0x0E8;/ 不使能看门狗,因为SCSR2中的WDOVERRIDE / 即WD保护位复位后的缺省值为1,故可以用 / 软件禁止看门狗*IMR=0x0000;/ 禁止所有中断 P26*IFR=0x0FFFF;/ 清除全部中断标志,写1清0 P26*MCRA=*MCRA0x0FF;/ IOPB端口配置为一般的I/O功能, *PBDATDIR=*PBDATDIR|0x0FF00;/ IOPB端口设置为输出方式*MCRC=*MCRC0X0FBFF;/ 把IOPF2端口配置为一般I/O端口*PBDATDIR=*PBDATDIR0x0FF00;/ 熄灭全部的LED灯*PFDATDIR=*PFDATDIR|0x0404;/ IOPF2 设置为输出方式,且IOPF2=1*PFDATDIR=*PFDATDIR0x0FFFB;/ IOPF2=0/ 以上的操作产生一个脉冲,使LED全部熄灭/ 主程序main()int led; / 定义一个局部变量int i,k; / 定义其它一些临时变量initial( ); / 系统初始化while(1)for(led=0x0080,i=0;i8;led=led1,i+)*PBDATDIR=*PBDATDIR0x0FF00; / 首先屏蔽IOPB的各位*PBDATDIR=*PBDATDIR|led;/ 把需要显示的值赋给IOPB端口*PFDATDIR=*PFDATDIR|0x0404;/ IOPF2 设置为输出方式,且IOPF2=1*PFDATDIR=*PFDATDIR0x0FFFB;/ IOPF2=0,这两句语句给一个脉冲, / 使LED上显示IOPB端口的值for(k=0;k0x0ffff;k+)k=k; / 为了保证显示时间,给一定时间的延时 / 直接返回中断服务程序void interrupt nothing( ) return;2 I/O端口作为输入和输出使用源程序代码:(1) 所需的复位和中断向量定义文件“vectors.asm”同于前。在这以后的所有例程中,如果没有特别说明,vectors.asm都是相同的。(2) 主程序/ 该程序用于键盘的识别,按键情况通过LED表示.#include register.h/ 初始化子程序initial() asm( setcSXM);/ 抑制符号位扩展asm( clrcOVM);/ 累加器中结果正常溢出asm( clrcCNF);/ B0被配置为数据存储空间*SCSR1=0x81FE;/ CLKIN=6M,CLKOUT=4*CLKIN=24M*WDCR=0x0E8;/ 不使能看门狗,因为SCSR2中的WDOVERRIDE / 即WD保护位复位后的缺省值为1,故可以用 / 软件禁止看门狗*IMR=0x0000;/ 禁止所有中断*IFR=0x0FFFF;/ 清除全部中断标志,写1清0*MCRA=*MCRA0x0FF;/ IOPB端口配置为一般的I/O功能*PBDATDIR=*PBDATDIR|0x0FF00;/ IOPB端口设置为输出方式*MCRC=*MCRC0x03FF;/ IOPF2端口和IOPF36配置为一般的I/O功能*PFDATDIR=*PFDATDIR|0x0400;/ IOPF2端口为输出端口,IOPF3-IOPF6为输入端口 *PBDATDIR=*PBDATDIR0x0FF00; / 熄灭全部的LED灯*PFDATDIR=*PFDATDIR|0x0404;/ IOPF2 设置为输出方式,且IOPF2=1*PFDATDIR=*PFDATDIR0x0FFFB;/ IOPF2=0/ 以上的操作产生一个脉冲,使LED全部熄灭 / 屏蔽中断子程序void inline disable() asm( setc INTM);int keyscan( )int k,j;/ 定义局部变量k=*PFDATDIR0x0078;/ 读入键盘状态并屏蔽掉相应的位if(k = 0x0078) k=0;elsek=1;/ 有键按下,则k=1if(k = 1)/ 若无键按下,则直接返回for(j=30000;j0;j-) j=j;/ 若有键按下,则延时消抖动k=*PFDATDIR0x0078;/ 读入键盘状态并屏蔽掉相应的位if(k = 0x0078) k=0;elsek=1;/ 有还有键按下,则k=1return(k);/ 返回K值int keyserve( )/ 键服务子程序intk;/ 定义局部变量k=*PFDATDIR0x0078;/ 读入键盘状态并屏蔽掉相应的位switch(k)case 0x0070:*PBDATDIR=(*PBDATDIR0xFF00)|0X0001;break;/ 若按下K1键,则显示1case 0x0068:*PBDATDIR=(*PBDATDIR0xFF00)|0X0002;break;/ 若按下K2键,则显示2case 0x0058:*PBDATDIR=(*PBDATDIR0xFF00)|0X0003;break;/ 若按下K3键,则显示3case 0x0038:*PBDATDIR=(*PBDATDIR0xFF00)|0X0004;break;/ 若按下K4键,则显示4default:*PBDATDIR=*PBDATDIR;*PFDATDIR=*PFDATDIR|0x0404;/ IOPF2 设置为输出方式,且IOPF2=1*PFDATDIR=*PFDATDIR0x0FFFB;/ IOPF2=0/ 以上给一个脉冲,使B端口的值显示出来main( )disable( );/ 屏蔽所有中断initial( );/ 系统初始化w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空航天行业智能航空与空间探索研究报告及未来发展趋势预测
- 2025年高铁旅客服务满意度测评报告撰写考核试卷
- 2025年互联网行业AI技术应用与未来发展研究报告及未来发展趋势预测
- 2025年服装鞋帽行业可持续时尚发展策略探讨报告
- 环境保护的重要性与挑战-公众演讲
- 2025湖北襄高城市更新投资有限公司面向社会招聘初试笔试考试参考试题及答案解析
- 2025广东广州市荔湾区卫生健康系统事业单位招聘工作人员98人考试笔试模拟试题及答案解析
- 2025年建平县面向社会公开招聘城市社区工作者21人考试笔试备考题库及答案解析
- 2025福建厦门市集美区康城小学教师招聘2人笔试考试备考题库及答案解析
- 2025甘肃省民航机场集团招聘38人笔试考试备考题库及答案解析
- 个人生涯发展展示
- 妊娠合并精神病的护理查房
- DB32-T 4648-2024 公路钢梁桥养护技术规范
- 血液科护士的血液病患者病情评估与监测技巧
- 金融学 医疗保险对家庭金融资产配置的影响研究-最终稿
- 枸橼酸钠血滤置换液-药品临床应用解读
- 室分常用的计算公式、自动换算(实用型)-
- 沪科版九年级物理上册期中测试卷(带有答案)
- 人体断面解剖学教学大纲
- GB/T 16857.2-2017产品几何技术规范(GPS)坐标测量机的验收检测和复检检测第2部分:用于测量线性尺寸的坐标测量机
- GB 17498.9-2008固定式健身器材第9部分:椭圆训练机附加的特殊安全要求和试验方法
评论
0/150
提交评论