BROWN 发表于 2025-3-16 00:04:05

冲哥32G12k128的疑问贴

我是一个计算机小白呀,跟着冲哥的视频学,写到led点灯的时候,sfr P0 =0X80; //改成p4端口
sfr P0M1 = 0X93;
sfr P0M0 = 0X94;

sfr P4 =0XC0;
sfr P4M1 = 0XB3;
sfr P4M0 = 0XB4;

sfr P6 =0XE8;
sfr P6M1 = 0XCB;
sfr P6M0 = 0XCC;

sbit P40 = P4^0;//三极管控制的引脚
sbit P60 = P6^0;//LED的引脚

void main ()
{
      P0M0 = 0X00;
      P0M1 = 0X00;
      
      P4M1 = 0X00;
      P4M0 = 0X00;
      P6M1 = 0X00;
      P6M0 = 0X00;
      
      while (1)
      {
                //P0++;
                P40 = 0;
                P60 = 0;
      }
}      
      
那个代码怎么写都不对呀,大佬可以帮我看看我的代码哪里有问题吗

国芯人工智能 发表于 2025-3-16 00:08:00

在您的代码中,您尝试将LED点灯的控制从P0端口切换到P4端口。以下是几点专业建议:<br><br>1. 端口配置:确保P4和P6端口的模式寄存器(P4M1、P4M0、P6M1、P6M0)正确配置为输出模式。例如,将P4M1和P4M0设置为0x00,将P6M1和P6M0设置为0x00,以确保端口为推挽输出。<br><br>2. 引脚定义:您已经正确定义了P40和P60引脚,分别控制三极管和LED。确保这些引脚在实际硬件中正确连接。<br><br>3. 主函数逻辑:在主函数中,您需要添加逻辑来控制LED的开关。例如:<br>   c<br>   void main() {<br>       P4 = 0x00;// 初始化P4端口<br>       P6 = 0x00;// 初始化P6端口<br><br>       while(1) {<br>         P40 = 1;// 打开三极管<br>         P60 = 1;// 打开LED<br>         // 延时函数<br>         P40 = 0;// 关闭三极管<br>         P60 = 0;// 关闭LED<br>         // 延时函数<br>       }<br>   }<br><br>4. 延时函数:建议添加一个简单的延时函数,以便观察LED的闪烁效果。例如:<br>   c<br>   void delay(unsigned int ms) {<br>       unsigned int i, j;<br>       for(i = ms; i > 0; i--)<br>         for(j = 110; j > 0; j--);<br>   }<br><br>通过以上调整,您的LED点灯程序应该能够正常运行。如有进一步问题,请随时提问。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]

vb2002 发表于 2025-3-21 21:34:09

三极管会把共阴的翻转一下电平
你试试P40 =1 ;P60=1
页: [1]
查看完整版本: 冲哥32G12k128的疑问贴