wanli 发表于 2026-5-23 14:08:02

STC32G144K246怎样配置PA PB引脚问题

sfr         P0          =         0x80;
    sbit    P00         =         P0^0;
    sbit    P01         =         P0^1;
    sbit    P02         =         P0^2;
    sbit    P03         =         P0^3;
    sbit    P04         =         P0^4;
    sbit    P05         =         P0^5;
    sbit    P06         =         P0^6;
    sbit    P07         =         P0^7;
怎样配置PA PB的具体引脚呢,有没有详细配置说明
sfr         PA          =         0x80; 具体哪个
    sbit    PA0         =         PA^0;
    sbit    PA1         =         PA^1;
    sbit    PA2         =         PA^2;
    sbit    PA3         =         PA^3;
    sbit    PA4         =         PA^4;
    sbit    PA5         =         PA^5;
    sbit    PA6         =         PA^6;
    sbit    PA7         =         PA^7;
比喻上述这样配置 延用stc早期单片机风格

soma 发表于 2026-5-23 15:46:49

如图

wanli 发表于 2026-5-23 17:39:03

soma 发表于 2026-5-23 15:46
如图

    sbit    PA0OUT      =         PA^0;
    sbit    PA1OUT      =         PA^1;
    sbit    PA2OUT      =         PA^2;
    sbit    PA3OUT      =         PA^3;
    sbit    PA4OUT      =         PA^4;
    sbit    PA5OUT      =         PA^5;
    sbit    PA6OUT      =         PA^6;
    sbit    PA7OUT      =         PA^7;
报错这样不行是不是这个和老风格哪里寄存器不一样呢

soma 发表于 2026-5-23 17:47:45

wanli 发表于 2026-5-23 17:39
sbit    PA0OUT      =         PA^0;
    sbit    PA1OUT      =         PA^1;
    sbit    PA ...

PA不支持按位寻址

wanli 发表于 2026-5-24 11:16:19

soma 发表于 2026-5-23 17:47
PA不支持按位寻址

哪我让 PA0 赋值到LED1   PA1 赋值到LED2   让LED点亮 熄灭应该怎样单独编写呢{:zhemo:}

ercircle 发表于 2026-5-24 15:43:42

wanli 发表于 2026-5-24 11:16
哪我让 PA0 赋值到LED1   PA1 赋值到LED2   让LED点亮 熄灭应该怎样单独编写呢

#define LED1_ON()   PAOUT |= 0x01;

#define LED1_OFF()PAOUT &= ~0x01;

autopccopy 发表于 2026-5-24 20:36:30

其实它的数据手册有相关扩展IO的寄存器说明,建议先看看。

angmall 发表于 2026-5-25 10:36:00

ercircle 发表于 2026-5-24 15:43
#define LED1_ON()   PAOUT |= 0x01;

#define LED1_OFF()PAOUT &= ~0x01;

你这个会报错的



用这个
#define SET_PA0()       PASETB = 0x01//PA0 = 1
#define CLR_PA0()       PACLRB = 0x01//PA0 = 0


#define SET_PA2()       PASETB = 0x04//PA2 = 1
#define CLR_PA2()       PACLRB = 0x04//PA2 = 0





ercircle 发表于 2026-5-25 10:47:48

angmall 发表于 2026-5-25 10:36
你这个会报错的




报什么错?






angmall 发表于 2026-5-25 11:13:39

ercircle 发表于 2026-5-25 10:47
报什么错?

直接对P8OUT与或操作不是原子操作(有些人不懂可能会产生错误,特别是中断与主循环中都使用),所以设置了P8SETB   P8CLRB寄存器,这是原子操作,不会问题,学ARM核的搞法
页: [1] 2
查看完整版本: STC32G144K246怎样配置PA PB引脚问题