| 上传了普中资料到deepseek,不断的询问改进,下载验证,deepseek AI给出了优化版本,运行非常丝滑,人工智能还是杠杠的 
 复制代码
 复制代码/*************************************************************************************
*  标题:  步进电机试验四(采用4细分)                                                                                         *
*                                                                                                                                                                          *
*    通过本例程了解步进马达使用及驱动程序编写                                                                                 *
*;   单相四拍通电驱动时序:                                                          *
*;   正转: A/  B  A  B/                                                                                                                         *
*    反转: B/  A  B  A/                                                                                              *
*                                                                                                                                                                     *
*    UDN2916电流控制真值表:                                                                                                                 *
*          I0    I1        输出电流                                                                                                                 *
*          L            L                  最大                                                                                                                         *
*          H                L                  最大*2/3                                                                                                                 *
*          L                H                  最大*1/3                                                                                                                 *
*     H     H         0                                                                     *
*   请学员一定要消化掉本例程                                                                    *
*   注意:J14短路冒需断开                                                                                    *
**************************************************************************************/  
#include "reg52.h"
#define speed 38
#define MICRO_DELAY 10
sbit PH1 = P1^0;
sbit PH2 = P1^1;
sbit I01 = P1^2;
sbit I11 = P1^3;
sbit I02 = P1^4;
sbit I12 = P1^5;
unsigned char A_I0_I1;
unsigned char B_I0_I1;
typedef struct {
    unsigned char PH1;
    unsigned char PH2;
    unsigned char I0_I1;
} SegStep;
// 顺时针旋转细分表(4细分)
SegStep SegTable[] = {
    {0, 0, 0x00 | (0x01 << 2)},  // A反向,B反向,A=100%, B=67%
    {0, 1, 0x01 | (0x02 << 2)},  // A反向,B正向,A=67%, B=33%
    {1, 1, 0x02 | (0x00 << 2)},  // A正向,B正向,A=33%, B=100%
    {1, 0, 0x00 | (0x01 << 2)}   // A正向,B反向,A=100%, B=67%
};
void delay(int time) {
    int i, j;
    for (j = 0; j < time; j++)
        for (i = 0; i < 120; i++);
}
void Go() {
        int i;
    for (i = 0; i < sizeof(SegTable)/sizeof(SegStep); i++) {
        PH1 = SegTable[i].PH1;
        PH2 = SegTable[i].PH2;
        
        A_I0_I1 = SegTable[i].I0_I1 & 0x03;
        B_I0_I1 = (SegTable[i].I0_I1 >> 2) & 0x03;
        
        I01 = A_I0_I1 & 0x01;
        I11 = (A_I0_I1 >> 1) & 0x01;
        I02 = B_I0_I1 & 0x01;
        I12 = (B_I0_I1 >> 1) & 0x01;
        
        delay(MICRO_DELAY);
    }
    delay(speed);
}
void main() {
    while (1) {
        Go();
    }
}
 
 |