打印
[PIC®/AVR®/dsPIC®产品]

请问 PIC16F18446 的 IO 端口寄存器算不算很坑人?

[复制链接]
1019|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请问 PIC16F18446 的 IO 端口寄存器算不算很坑人?如图,比如,我要单独设置 RB5 端口为输出,且不能牵涉到RB4和RB6,请问怎样设置?



捕获4.PNG (47.78 KB )

捕获4.PNG

捕获3.PNG (47.77 KB )

捕获3.PNG

使用特权

评论回复
沙发
panxiaoyi|  楼主 | 2021-4-29 17:56 | 只看该作者
感觉 PIC 就像 特朗普,很坑人。
之前在官网下单买了几个不同型号的样品,结果要分三次发货,现在都有一个多月了,第三个样品还没有发货
收到货后写程序时才发现 PIC18F24Q10 没有中文数据手册的,如下图
还好,我同时购买了 PIC16F18446 ,并且已经打样PCB(纯玩而已),结果又发现,我需要用到RB4和RB6端口,却发现它们的寄存器不是按传统出牌的。
还有,PIC18F24Q10 跟 PIC18F26K83 的中断C表达式竟然有很大的不同,害我转了不少圈
看来纯玩PIC真累。

微信图片_20210429175508.jpg (539.7 KB )

微信图片_20210429175508.jpg

捕获5.PNG (83.48 KB )

捕获5.PNG

使用特权

评论回复
板凳
panxiaoyi|  楼主 | 2021-4-29 18:09 | 只看该作者
哦,刚刚想起,既然上面的寄存器 LATB4、5、6 和 7 的设置很特别,那么,我下面的IO口模拟I2C操作怎么又很正常的呢,是不是上面的书写不是普通人能看得懂的?
#define IIC_SCL  LATB6               //SCL
#define IIC_SDA  LATB4               //SDA

//简单延时
void IIC_delay_us(void)
{
        unsigned char i=0;               //软件延时时间0123456...
        while(i) i--;
}

//IIC初始化
void IIC_init(void)
{
    TRISB4=0;                        //端口输出
    TRISB6=0;

    IIC_SCL=1;                       //时钟数据STOP
    IIC_delay_us();
    IIC_SDA=1;
    IIC_delay_us();
}

使用特权

评论回复
地板
panxiaoyi|  楼主 | 2021-4-29 22:11 | 只看该作者
都是 中文译文 惹的祸


捕获9.PNG (41.64 KB )

捕获9.PNG

捕获8.PNG (40.5 KB )

捕获8.PNG

使用特权

评论回复
5
GeekyGeek| | 2021-4-30 00:13 | 只看该作者
panxiaoyi 发表于 2021-4-29 22:11
都是 中文译文 惹的祸

之前也碰到, 被中文手册弄得一头雾水, 后面看了英文手册就豁然开朗.
后来, 基本上都是只看英文手册. Microchip 的英文手册, 还是不错的.

PIC18F24Q10 是非常新的芯片了,  中断是向量表.  和之前PIC18 的中断有很大不同.

使用特权

评论回复
6
hu9jj| | 2021-5-1 19:14 | 只看该作者
使用代码配置器MCC也许就不会入这个坑了,配置引脚很直观的。

使用特权

评论回复
7
chenjun89| | 2021-5-2 10:33 | 只看该作者
这个怎么说了,不算吧,各有千秋。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

384

帖子

2

粉丝