3201|13

8

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

小白自学pic24fj,遇到问题求大神指导。急急急!!! [复制链接]

 

自己刚入门PIC24fj256ga108的单片机,我写了程序,控制8个继电器分别导通电路的,但是程序烧写到单片机中,无法使电路按照我要求导通。大神们看一下,是不是我程序出问题了。顺便麻烦看一下我是不是串口写错了,串口调试的时候没有反应。麻烦大神看一下我的工程文件有什么问题吗
#include
#include"serial.h"
unsigned char RxData;//这个数是从串口收到数据,可以判断这个数据,来决定开哪一个继电器
int main()
{
TRISB = 0x0000;
     TRISC = 0X0000;
TRISD = 0x0000;
UART_Init();
while(1)
{   if(RxData==1)
        {PORTB = 0xCDFF;
   PORTD = 0xFFFF;
         PORTC = 0xFFFF;
}                     
       else if(RxData==2)
       { PORTB = 0xADFF;
   PORTD = 0xFFFF;
         PORTC = 0xFFFF;
       }
      else if(RxData==3)
      {PORTB = 0xF5FF;
      PORTD = 0xFFFF;
         PORTC = 0xEFFF;
                         }
    else if(RxData==4)
    { PORTB = 0xF5FF;
   PORTD = 0xEFFF;
         PORTC = 0xFFFF;
                         }
        else if(RxData==5)
    { PORTB = 0xBBFF;
   PORTD = 0xF7FF;
         PORTC = 0xFFFF;}
       else if(RxData==6)
    { PORTB = 0xBBFF;
      PORTD = 0xFFFB;
         PORTC = 0xFFFF;}
         else if(RxData==7)
     {PORTB = 0xFBFF;
   PORTD = 0xDFFF;
         PORTC = 0xFFFE;}
         else if(RxData==8)
       { PORTB = 0xFBFF;
   PORTD = 0xDFFF;
         PORTC = 0xFFFD;}
}   
}

下面是串口程序
#include
#include"serial.h"
void UART_Init(void)
{
TRISFbits.TRISF3=0;  
TRISFbits.TRISF2=1;  
U1STA=0x0400; //对发送机使能并对错误标志位清零,接受或者收到一个字符即产生//中断   
U1MODE=0x8000; //允许串行口工作使能且设置BREGH=0模式 、8位数据无奇偶校验、一位停止位  
U1BRG=50; //8M晶振且波特率设置为9600时,U1BRG设置值为51  
IFS0bits.U1TXIF=0;  
IFS0bits.U1RXIF=0;  
IEC0bits.U1TXIE=1; //允许串行通讯发送中断使能  
IEC0bits.U1RXIE=1;//允许串行通信接受中断
}
void __attribute__((interrupt))_U1RXInterrupt(void)
{   
IFS0bits.U1RXIF=0;  
RxData=U1RXREG;   
}




pic24GAv2.1.zip

192.45 KB, 下载次数: 2

最新回复

http://www.microchip.com/development-tools/downloads-archive  详情 回复 发表于 2017-2-15 13:27
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
输出使用LATx寄存器,而不是PORTx。
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
dcexpert 发表于 2017-2-15 09:28
输出使用LATx寄存器,而不是PORTx。

使用LAT操作也是一样的问题,我就改成了port,我的程序和串口有问题吗版主大人。方便的话能否打开我的工程文件帮我看一下呢

点评

你仿真看看,描述的太简单,不好分析。 proteus支持这个型号,可以在proteus中调试,不但方便,速度也快。 另外建议程序中不要直接对寄存器赋值,这样不好维护和修改,可以多使用位操作。PIC的头文件中已经定  详情 回复 发表于 2017-2-15 10:09
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

4
 
配置位你设置了吗?在设置中是在程序中配置,但程序中又没有配置代码。
 
 
 

回复

1万

帖子

25

TA的资源

版主

5
 
cp1994 发表于 2017-2-15 09:32
使用LAT操作也是一样的问题,我就改成了port,我的程序和串口有问题吗版主大人。方便的话能否打开我的工 ...

你仿真看看,描述的太简单,不好分析。

proteus支持这个型号,可以在proteus中调试,不但方便,速度也快。

另外建议程序中不要直接对寄存器赋值,这样不好维护和修改,可以多使用位操作。PIC的头文件中已经定义了很多位变量,你可以打开看看。
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

6
 
gs001588 发表于 2017-2-15 09:51
配置位你设置了吗?在设置中是在程序中配置,但程序中又没有配置代码。

应该怎么设置
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

7
 
不只配置位一处有问题,工程设置完全不对呀。还是用MPLAB X IDE吧
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

8
 
gs001588 发表于 2017-2-15 10:28
不只配置位一处有问题,工程设置完全不对呀。还是用MPLAB X IDE吧

能给个下载链接吗
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

9
 
gs001588 发表于 2017-2-15 10:28
不只配置位一处有问题,工程设置完全不对呀。还是用MPLAB X IDE吧

能给个下载链接吗

点评

http://www.microchip.com/mplab/mplab-x-ide http://www.microchip.com/mplab/compilers  详情 回复 发表于 2017-2-15 13:24
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

10
 
pic24GAv2.1.rar (125.11 KB, 下载次数: 7)
这个改了改,也不保证能正常,但至少比你那个要好一些。
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

11
 
我这个程序用了从配置来说用了内部8M RC,指令时钟也是8M,波特率时钟即为4M。波特率设置寄存器 25
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

12
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

13
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

14
 
gs001588 发表于 2017-2-15 12:42
这个改了改,也不保证能正常,但至少比你那个要好一些。

万分感谢
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表