DSP 课件 IO端口C程序.doc_第1页
DSP 课件 IO端口C程序.doc_第2页
DSP 课件 IO端口C程序.doc_第3页
DSP 课件 IO端口C程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论