飞思卡尔8位单片机MC9S0814程序USB口初始化与数据的收发编程.doc

飞思卡尔8位单片机MC9S0814程序USB口初始化与数据的收发编程.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14.3.7 USB口初始化与数据的收发编程 *------------------------------------------------------* *功能:USB中断服务程序 *调用:handleSETUP、handleOUT0、handleIN0、initUSB *------------------------------------------------------* isrUSB: SEI ;禁止中断 ;判断是否是端点0接收到数据产生的中断,如果不是,则跳转去判断 ;是否是端点0发送数据产生中断 isr1: BRCLR B_RXD0F,UIR1,isr2 ;判断是否是SETUP事务,如果不是则认为是OUT事务 BRCLR B_SETUP,USR0,outPacket JSR handleSETUP ;调用处理SETUP事务子程序 BRA isrExit outPacket: JSR handleOUT0 ;调用处理一个普通OUT事务子程序 BRA isrExit ;判断是否是端点0发送完数据产生中断,如果不是,则跳转去判断 ;是否是复位产生中断 isr2: BRCLR B_TXD0F,UIR1,isr5 JSR handleIN0 ;调用处理端点0的IN事务处理子程序 BRA isrExit ;判断是否是USB复位产生中断,如果不是则跳出中断 isr5: BRCLR B_RSTF,UIR1,isrExit BSET B_RSTFR,UIR2 ;清除RSTF中断标志位 jiang add JSR initUSB ;初始化USB系统 BSET B_ENABLE1,UCR3 ;允许端点1 BSET B_ENABLE2,UCR3 ;允许端点2 BSET B_TXD0IE,UIR0 ;允许端点0发送数据产生中断 BSET B_RXD0IE,UIR0 ;允许端点0接收数据产生中断 BSET B_RX0E,UCR0 ;允许端点0接收数据 MOV #US_DEFAULT,USB_State ;USB设备进入Default状态 isrExit: CLI ;开中断 RTI 在handleSETUP子程序中,首先取得端点0数据寄存器中的数据(也就是设备请求),分析这些数据,判断是什么类型的设备请求,然后转入相应的设备请求子程序中执行。举例说明:若是取描述符请求,则子程序将相应描述符写到端点0数据寄存器中准备发送;若是设置地址,则相应的子程序不设置新地址,而是等到下一个端点0的 IN中断中进行设置新地址;在handleOUT0子程序中,由于端点0的OUT事务仅仅是作为标准设备请求的状态阶段,所以该子程序只是对一些标志位进行设置;在handleIN0子程序中,也要先判断当前执行的是什么设备请求,然后执行相应的操作。如:若是取描述符请求,则将相应描述符写到端点0数据寄存器中准备发送;若是设置地址,则向地址寄存器中写入新地址。 下面我们主要讲解端点1和端点2利用查询方式发送和接收数据的编程方法,包括USB初始化、发送字节和接收字节。 (1)USB初始化 以下用到的有关口地址定义在头文件JB8.H中定义,也就是说上面介绍的所有寄存器的英文名,如UDDR、UIR0,可以直接使用。 对USB进行初始化,主要是对USB寄存器的设置,在主程序的初始化时,调用如下的初始化程序: MOV #$80,UADDR ;允许USB模块,初始地址为0 MOV #$00,UCR0 ;将UCR0寄存器复位 MOV #$00,UCR1 ;将UCR1寄存器复位 MOV #$00,UCR2 ;将UCR2寄存器复位 MOV #$44,UCR3 ;清TX1ST位,允许内部上拉 MOV #$00,UCR4 ;将UCR4寄存器复位 MOV #$00,UIR0 ;将UIR0寄存器复位,端点1和端点2都不允许中断

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档