社区导航

 

搜索
查看: 345|回复: 14

[求助] 求助 PIC18单片机

[复制链接]

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-1-26 10:44 | 显示全部楼层 |阅读模式
我是刚初学PIC18单片机  用的芯片是PIC18F45K22   我在做串口接收程序  怎么都接收不到数据是怎么回事  ;串口配置
             BCF    TRISE,TRISE0
             BCF    TRISE,TRISE1
             BCF    TRISE,TRISE2
             BSF        LATE,LATE0
             BSF        LATE,LATE1
             BSF        LATE,LATE2
;-------------中断设置------------------------
         MOVLW        0X20
         MOVWF        INTCON
         CLRF        INTCON2
         CLRF        INTCON3                  ;TC设置
         BCF        RCON,IPEN                ;中段级别设置
         BSF        PIE1,RC1IE
         BCF        PIE1,TX1IE
         BCF        IPR1,RC1IP
         BCF        IPR1,TX1IP
    ; BCF     PIR1,RC1IF
     ;BCF     PIR1,TX1IP            
     BSF        INTCON,GIE                ;打开总中断
         BSF        INTCON,PEIE                  ;打开外部中断


CKZD:

      BCF        PIR1,RC1IF              ;清标志位
          MOVF        RCREG1,0           ;接收寄存器存W(标识        
      BCF        LATE,LATE2         ;收指示灯
      BCF    LATC,LATC5        ;控制端置低
      BCF        LATE,LATE1         ;发指示灯
           MOVWF    TXREG1
FASJC:           BTFSS    PIR1,TX1IF
           BRA      FASJC      
      RETFIE FAST
      END

此帖出自PIC单片机论坛


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-1-26 12:41 | 显示全部楼层
表示对汇编不了解


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-1-26 13:46 | 显示全部楼层

用c帮助一下也可以   我要用串口接收数据,用的PIC18F45K22串口1  波特率9600  晶振11.0592M    您可以帮忙配置一下吗  


回复

使用道具 举报

674

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-1-26 15:41 来自手机 | 显示全部楼层
汇编代码在线调试一下,看看中断标志有没有置位


回复

使用道具 举报

38

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-1-26 15:53 | 显示全部楼层
刚开始学就不要用汇篇了,C的例程很多


回复

使用道具 举报

7510

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-1-26 17:22 | 显示全部楼层
现在mplabx中有自动配置工具,可以帮助产生正确的代码,你可以试试。


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-1-28 09:02 | 显示全部楼层
dcexpert 发表于 2019-1-26 17:22
现在mplabx中有自动配置工具,可以帮助产生正确的代码,你可以试试。

在哪 步骤是什么 可否告诉我 我刚开始学

点评

很久没有用过了,好像是在插件(plugins)中,安装一个mcc插件,就可以自动根据选择参数,创建配置。 旧版的mplab IDE不行,需要使用新的mplab x ide  详情 回复 发表于 2019-1-28 09:11


回复

使用道具 举报

7510

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-1-28 09:11 | 显示全部楼层
谭丽娟 发表于 2019-1-28 09:02
在哪 步骤是什么 可否告诉我 我刚开始学

很久没有用过了,好像是在插件(plugins)中,安装一个mcc插件,就可以自动根据选择参数,创建配置。

旧版的mplab IDE不行,需要使用新的mplab x ide


回复

使用道具 举报

7510

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-1-28 09:11 | 显示全部楼层
此外引脚的配置也需要注意,如果和编程/仿真接口复用也会有问题。


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-1-28 10:57 | 显示全部楼层
dcexpert 发表于 2019-1-28 09:11
此外引脚的配置也需要注意,如果和编程/仿真接口复用也会有问题。

我用的是PIC18F45K22这个芯片 管教我也已经断开了


回复

使用道具 举报

460

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-2-8 15:29 | 显示全部楼层
这个用C语言比较好实现吧


回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-2-13 10:21 | 显示全部楼层
串口有初始化吗?


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-2-14 14:10 | 显示全部楼层
还是用C比较好理解!汇编,表示压力山大~


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-2-14 14:15 | 显示全部楼层

//==========PIC18F46K80的串口初始化函数
void USART_Init()//============URAST设置
{
                //============================
                TRISC6 = 0; //TX
                TRISC7 = 1; //RX
                //WPUC7 = 0; //关闭弱上拉
                //============================
               
                //TXSTAx:发送状态和控制寄存器
                TXSTAbits.BRGH = 0;  //0= 选择低速波特率 1= 高速
                TXSTAbits.TX9 = 0;  //选择8位数据位
                TXSTAbits.TXEN = 1;  //使能发送
               
                RCSTAbits.SPEN = 1;  //串口已启用
                RCSTAbits.RX9 = 0;  //选择8位数据位
                RCSTAbits.CREN = 1;  //使能接收
               
                //计算SPBRGL和SPBRGH的基础上,所需的波特率值
                //对于8位异步模式与BRGH = 0:目标波特率= FOSC/64([SPBRGH:SPBRGL] +1)
                //对于8位异步模式,BRGH = 1:目标波特率= FOSC/16([SPBRGH:SPBRGL] +1)
                //BRGH = 0,FOSC = 16MHz 波特率 = 9600
                // 9600 = FOSC/64([SPBRGH:SPBRGL] +1)
                // 9600 = FOSC/64(X +1)
                // 9600 = Fosc/64X + 64
                // 9600(64X + 64)= FOSC
                // X = [FOSC /(9600)(64)] -1
                // X = [16000000 /(9600)(64)] -1
                // X = SPBRGH:SPBRGL = 25.01(四舍五入至25)
               
                //SPBRGL = 207; //16MHz = 1200bps,32MHz = 2400bps //= 207.33 (四舍五入至207 )
                //SPBRGL = 103; //16MHz = 2400bps,32MHz = 4800bps //= 103.16 (四舍五入至103 )
                //SPBRGL = 51;  //这里是计算值SPBRGH和SPBRGL的 //16MHz = 4800bps,32MHz = 9600bps //= 51.08 (四舍五入至51 )
                //SPBRGL = 25;  //这里是计算值SPBRGH和SPBRGL的 //16MHz = 9600bps,32MHz = 19200bps //= 25.04(四舍五入至25)
                //SPBRGL = 12;  //16MHz = 19200bps,32MHz = 38400bps //= 12.02(四舍五入至12)
               
                //波特率设置程序
                EE_read_UART_bps(); //读出UART口波特率
                if(EE_UART_bps == 1) //16MHz = 1200bps
                {
                        SPBRG1 = 207;
                }
                else if(EE_UART_bps == 2) //16MHz = 2400bps
                {
                        SPBRG1 = 103;
                }
                else if(EE_UART_bps == 3) //16MHz = 4800bps
                {
                        SPBRG1 = 51;
                }
                else if(EE_UART_bps == 4) //16MHz = 9600bps
                {
                        SPBRG1 = 25;
                }
                else if(EE_UART_bps == 5) //16MHz = 19200bps
                {
                        SPBRG1 = 12;
                }
                else
                {
                        SPBRG1 = 25; //默认9600bps
                }
                SPBRGH1 = 0;
                PIR1bits.RCIF = 0;  //接收中断标志0
                PIE1bits.RCIE = 1;  //使能UART接收中断
                INTCONbits.PEIE = 1;  //允许外设中断
                INTCONbits.GIE =  1;  //使能全局中断
}


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-2-14 15:33 | 显示全部楼层
yfpc2006 发表于 2019-2-14 14:10
还是用C比较好理解!汇编,表示压力山大~

给我个C的也行


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-2-22 23:59 , Processed in 0.391329 second(s), 16 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表