查看: 3820|回复: 4

PIC24FJ256DA210

[复制链接]
  • TA的每日心情
    慵懒
    2015-10-20 09:02
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-10-14 17:15:51 | 显示全部楼层 |阅读模式
    分享到:
    希望高人帮我调PIC24FJ256DA210串口,只要能简单的发送接受数据就可以,现在最大的难处是1、找不到库函数在哪里2、不知道该怎么写程序可以编译成功,就像在玩游戏,但是不知道游戏规则。拜托大家啦
    回复

    使用道具 举报

  • TA的每日心情

    2021-12-11 14:10
  • 签到天数: 173 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-10-14 19:32:32 | 显示全部楼层
    去官网下载个MPLABE 下载个用户手册 用户手册里面应该会有汇编的参考代码(我用过PIC16F的,里面是有的)。在官网上看看吧,应该会有些例程的。实在不行杀手锏,打MICROCHIP的电话。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-1 10:07
  • 签到天数: 1617 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-10-14 21:44:53 | 显示全部楼层
    MaplabX有一个MPLAB® Code Configurator 工具,可以帮助产生外设的代码,可以试试。
    http://www.microchip.com/pagehan ... figurator/home.html

    PIC24的串口其实操作起来非常简单,就几个寄存器,比其它单片机的容易一些。找个数据手册,很快就可以掌握的。

    Proteus中没有PIC24FJ256DA210,不能提供仿真例程了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-10-20 09:02
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2015-10-16 19:19:06 | 显示全部楼层
    void DRV_UART1_InitializerUser(void)
    {
        #define DRV_UART1_PDS 0
        #define BRG_TEMP (unsigned long)(SYS_CLK_FrequencyPeripheralGet() / (4 * (unsigned long)DRV_UART1_CONFIG_BAUD_RATE))
        #define BRG_TEMP_10 (unsigned long)(SYS_CLK_FrequencyPeripheralGet()*10 / (4 * (unsigned long)DRV_UART1_CONFIG_BAUD_RATE))
       U1STA = 0x0000;
       U1MODE = (0x8088 & 0xFFFC)| DRV_UART1_PDS;//0x8388
       // UTXEN disabled; UTXINV disabled; URXISEL RX_ONE_CHAR; ADDEN disabled; UTXISEL0 TX_ONE_CHAR; UTXBRK COMPLETED; OERR NO_ERROR_cleared;
       
       U1BRG = BRG_TEMP  - 1 + ((BRG_TEMP_10 - BRG_TEMP*10)+5)/10;//四舍五入

       U1STAbits.UTXEN = 1;

       drv_uart1_obj.txHead = uart1_txByteQ;
       drv_uart1_obj.txTail = uart1_txByteQ;
       drv_uart1_obj.rxHead = uart1_rxByteQ;
       drv_uart1_obj.rxTail = uart1_rxByteQ;
       drv_uart1_obj.rxStatus.s.empty = true;
       drv_uart1_obj.txStatus.s.empty = true;
       drv_uart1_obj.txStatus.s.full = false;
       drv_uart1_obj.rxStatus.s.full = false;
    }
    void PutChar(char txChar)
    {
    while(U1STAbits.UTXBF); //wait for FIFO space
    U1TXREG = txChar; //put character onto UART FIFO to transmit
    }//end PutChar(char txChar)

    void main(void)
    {
      DRV_UART1_InitializerUser();
      U1STAbits.UTXEN = 1;
      char send='a';
      
      while(1)
          {
       PutChar(send);  
      }
    }
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-10-20 09:02
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2015-10-16 19:19:42 | 显示全部楼层
    kgdk2011 发表于 2015-10-16 19:19
    void DRV_UART1_InitializerUser(void)
    {
        #define DRV_UART1_PDS 0

    帮我看看为什么发不了数据
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-27 12:59 , Processed in 0.151840 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.