8051 vusb Tx实现

发布者:幸福旅程最新更新时间:2024-07-23 来源: cnblogs关键字:vusb 手机看文章 扫描二维码
随时随地手机看文章

; .Outputusb_tx.SRC generated from: usbusb_tx.c

; vusb tx driver for 8051 core by crazy_code

; 2017/1/7

   

$NOMOD51

 

NAME    USB_TX

 

#include 'hs6210.inc'

 

    CSEG    AT    0x400

    EXTRN   DATA (usb_tx_count)

    EXTRN   DATA (usb_tx_buffer_pointer)

    EXTRN   DATA (pfix_nop)

    PUBLIC  usb_tx

 

#define tx_next  usb_tx_count

 

 

L_Bit0_Idle:                     //                                              [82]

    clr     c                    //清除Cy                            --1cycle    [83]

    nop                          //                                  --1cycle    [84]

    inc     r0                   //指针前移                          --1cycle    [85] ->13

    djnz    r7, L_Bit1_Begin     //不需要bit suffing, 发送下一bit    --3cycle    [3]

    inc     @r1                  //凑两个nop                                     [2]

    dec     @r1                  //凑两个nop                                     [4]

    mov     r7, #06h             // bit suffing 计数值还原           --2cycle    [6]

    XRL     P0,#03H              // 插入bit_suffing                  --3cycle    [9]

    sjmp    L_Bit2_Begin         // 发送下一bit                      --2cycle    [11]

 

L_Bit1_Idle:                     //从上次翻转到这个分支 2+1+1+3      --7cycle    [7]

    clr     c                    //清除Cy                            --1cycle    [8]

    mov     tx_next, @r0         //下一byte数据存到tx_nex            --2cycle    [10] ->10

    nop                          //                                  --1cycle    [11]

    djnz    r7, L_Bit2_Begin     //不需要bit suffing, 发送下一bit    --3cycle    [14]

    inc     @r1                  //凑两个nop                                     [2]

    dec     @r1                  //凑两个nop                                     [4]

    mov     r7, #06h             // bit suffing 计数值还原           --2cycle    [6]

    XRL     P0,#03H              // 插入bit_suffing                  --3cycle    [9]

    sjmp    L_Bit2_Begin         // 发送下一bit                      --2cycle    [11]

 

L_Bit2_Idle:                     //从上次翻转到这个分支                          [18]

    clr     c                    //清除Cy                            --1cycle    [19]

    inc     @r1                  //                                              [21] ->11

    djnz    r7, L_Bit3_Begin     //不需要bit suffing, 发送下一bit    --3cycle    [24]

    inc     @r1                  //凑两个nop                                     [2]

    dec     @r1                  //凑两个nop                                     [4]

    mov     r7, #06h             // bit suffing 计数值还原           --2cycle    [6]

    XRL     P0,#03H              // 插入bit_suffing                  --3cycle    [9]

    sjmp    L_Bit3_Begin         // 发送下一bit                      --2cycle    [11]

 

L_Bit3_Idle:                     //从上次翻转到这个分支                          [28]

    clr     c                    //清除Cy                            --1cycle    [29]

    mov     r2, tx_next          //下一byte数据存到r2                --2cycle    [31] ->10

    nop                          //                                  --1cycle    [32]

    djnz    r7, L_Bit4_Begin     //不需要bit suffing, 发送下一bit    --3cycle    [35]

    inc     @r1                  //凑两个nop                                     [2]

    dec     @r1                  //凑两个nop                                     [4]

    mov     r7, #06h             // bit suffing 计数值还原           --2cycle    [6]

    XRL     P0,#03H              // 插入bit_suffing                  --3cycle    [9]

    sjmp    L_Bit4_Begin         // 发送下一bit                      --2cycle    [11]

 

L_Bit4_Idle:                     //从上次翻转到这个分支                          [39]

    clr     c                    //清除Cy                            --1cycle    [40]

    inc     @r1                  //                                              [42] ->11

    djnz    r7, L_Bit5_Begin     //不需要bit suffing, 发送下一bit    --3cycle    [45]

    inc     @r1                  //凑两个nop                                     [2]

    dec     @r1                  //凑两个nop                                     [4]

[1] [2] [3]
关键字:vusb 引用地址:8051 vusb Tx实现

上一篇:基于8051内核的实验—流水灯
下一篇:ubuntu 8051 数码管

推荐阅读最新更新时间:2024-11-09 11:24

DS1318与8051型微控制器的接口
本文演示了使用DS1318经过时间计数器计算天数的应用。软件示例包括基本操作例程。包括应用电路的原理图。 DS1318引脚分配 计数器概述 本应用笔记演示如何使用DS1318历时计数器。DS1318具有一个44位计数器,每244μs递增一次。44位计数器通过六个8位寄存器访问(图1)。 图1.DS1318 44位计数器配置 从概念上讲,44 位计数器可以分为 12 位亚秒计数器和每秒递增一次的 32 位计数器(图 2)。如果不需要亚秒级分辨率,则只能访问32位秒计数器寄存器。 图2.12 位亚秒和 32 位秒计数器。 在本应用笔记的示例中,软件例程连续读取32位秒计数器,并在每次每秒更改一次时通过8051微控制器(
[单片机]
DS1318与<font color='red'>8051</font>型微控制器的接口
采用C8051F020微控制器控制CF卡存储及设计研究
随着计算机应用技术的飞速发展,移动存储设备得到了广泛的应用。其中CF(Compact Flash)卡诞生于1994年,是最早推出的闪存卡,在众多产品中其普及率也最高。由于CF卡具有价格低廉、体积小、存储容量大、高速等特点,因此被广泛地应用于数码相机、PDA和笔记本电脑等当前十分热门的消费类电子产品中。CF卡在其他领域中也得到了广泛的应用。如本文所述内容就是将CF卡应用于动态脑电图系统中存储脑电信号。 由于CF卡中存储的脑电图信号要能够从PC机上读取出来,所以必须把脑电图信号以相应的文件格式存储。下面将介绍采用C8051F020微控制器控制CF卡的文件存储,并详细地介绍其软、硬件的设计。 1 C8051F020与CF卡的接口
[单片机]
采用C<font color='red'>8051</font>F020微控制器控制CF卡存储及设计研究
8051单片机指令系统的用法介绍
一个计算机的指令系统就是它能执行的全部指令的集合。8051的指令系统共有111条指令,由42种助记符和7种寻址方式组合而成。 8051的指令通常包括操作码,和操作数两部分。操作码规定指令进行什么操作,采用助记表示;操作数表示指令的操作对象。 汇编语言指令的基本形式是:操作码助记符 目的操作数,源操作数。 操作码助记符与操作数分开书写,操作数中目的操作数在前,源操作数在后,操作数之间用逗号分隔。 如指令MOV B,#23H中符号MOV就是操作码助记符,这个助记符的意义为将源操作数传入目的操作数地址中,累加器A是目的操作数,寄存器B是源操作数。 8051的机器语言指令根据长度有一字节、二字节、三字节三种。一字节指令操作码中
[单片机]
<font color='red'>8051</font>单片机指令系统的用法介绍
基于8051单片机的中断控制
(1)由中断源提出中断请求,由中断控制允许控制决定是否响应中断,如果允许响应中断,则CPU按设定好的优先级的顺序响应中断。如果是同一优先级的中断,则按单片机内部的自然优先级顺序(外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断)响应中断。 CPU响应中断请求后,就立即转入执行中断服务程序。保护断点、寻找中断源、中断处理、中断返回,程序返回断点处继续执行。 (2)由中断允许寄存器IE控制开放和禁止中断。欲开放某一中断,则应先开放总中断允许(EA置1),然后开放相应中断的中断允许(相应位置1);若要要禁止中断,则EA置O即可。 (3)由中断优先级控制寄存器IP控制中断优先级,相应位置1,则设为高级中断,置0
[单片机]
探索STC12C5A60S2定时器
  STC12C5A60S2单片机集成了共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;   1. 基本特性   STC12C5A60S2单片机集成了两个16位定时/计数器。   1)寄存器   1.1)TMOD 定时器工作方式控制寄存器,包括13位寄存器、16位寄存器、8位寄存器等;   1.2)TCON 定时器控制寄存器,主要包括定时器启动控制位等;   1.3)AUXR 辅助寄存器,用以设置分频;默认12分频   1.4)TH0/1:定时器高8位寄存器   1.5)TL0/1:定时器
[单片机]
探索STC12C5A60S2定时器
【单片机】第1章:8051芯片结构了解
一、芯片介绍 单片机内部结构 8051单片机8大组件 1.cpu 2.RAM 3.ROM/EPROM/FLASH 4.定时器/计数器 5.串行口 6.四组8位并行I/O口 7.特殊功能寄存器 8.中断系统 8051特殊功能寄存器共21个,有5个中断源,2个中断优先级 8051按功能分:电源引脚,时钟引脚、I/O口引脚、控制引脚 用1来表示高电平,0来表示低电平 控制引脚: 29针:PSEN 读取外部存储器选通信号,接外部存储器的OE(输出允许)端 30针:ALE/PROG 功能1.地址锁存允许信号功能2.烧写输入端 31针:EA/Vpp 1.内部/外部
[单片机]
【单片机】第1章:<font color='red'>8051</font>芯片结构了解
基于C8051F060内置高精度模/数转换器的使用方法
1 引言 在混合信号单片机中,美国Cygnal公司新推出的C8051F06X系列高集成度混合信号单片机可谓一枝独秀。C8051F06X是高度集成的片上系统单片机,它有多达59个数字I/O口,采用与8051兼容的内核CIP-51,速度高达25MI/s。该系列单片机有C8051F060/2型和C8051F061/3型,与同家族的其他单片机相比,其模拟外设性能优异,除有一个带可编程放大器和多路选择器的8路10位ADC外,还有两路采样速度可达1 MS/s的16位ADC,两路12位DAC,3个电压比较器,1个片内温度传感器和参考电压源等。本文仅以C8051F060型为例,着重介绍其高速、高精度模/数转换器的使用方法。 2 高精度模/数转换器
[单片机]
基于C<font color='red'>8051</font>F060内置高精度模/数转换器的使用方法
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved