⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bujinchengxu.asm

📁 本人自己开发的步进电机驱动器(带细分)程序代码。汇编写的。
💻 ASM
📖 第 1 页 / 共 3 页
字号:
ORG 0000H
LJMP MONEY
ORG 0003H;INT0入口地址,进入外部脉冲中断服务程序
AJMP MONEY1
ORG 000BH;T0入口
AJMP MONEY0;定时器中断,进入内部定时方式中断程序
ORG 0013H;INT1入口地址
JNB P2.0,SDZH
AJMP TINGBAO
ORG 0001BH;T1入口,显示定时器      
LJMP DINGSHI;跳到扫描显示程序
SDZH:CLR 00H;设定电流标志位
RETI
TINGBAO:MOV P0,#0FFH
        MOV P1,#0FFH
        MOV P2,#0FFH
        MOV P3,#0FFH
        MOV PCON,#2H;启动停保.
MONEY:MOV SP,#60H
      SETB 00H
      SETB 01H
      MOV 21H,#0FFH
;**************电流初始化程序*******************
      MOV P1,33H;
      CLR P2.5
      NOP
      NOP
      NOP
      SETB P2.5
      MOV P1,#0H
;***********开启显示定时器T1*******************
      MOV TL1,#0H;设置定时器T1低位值
      MOV TH1,#0FBH;设置定时器T1高位值
      MOV TMOD,#19H
      SETB ET1;开放T1
      SETB TR1;启动定时器T1
      SETB TR0;开启定时器T0
      SETB EX1;开放INT1中断
      SETB IT0;让INT0为脉冲下降沿中断模式.
      CLR EA;屏蔽所有中断源
;***********************程序流向转换程序******************
      JB 05H,ZDZB
      CLR EX0;关闭INT0中断,既关断外部模式
      MOV TL0,35H;内部方式频率低位
      MOV TH0,36H;内部方式频率高位
      SETB ET0;开放定时器T0,既内部中断模式定时器.
      AJMP ZDZB1
;***********************中断前准备程序*********************
ZDZB:MOV TMOD,#10H;"中断准备"设定定时器工作模式,此时定时器T0未被设定,T1为16位定时器.
      SETB EX0;开放INT0中断
      CLR ET0;关闭定时器T0,既关闭内部模式.
ZDZB1:SETB P3.7;CS,WR
      SETB P3.0
      MOV 30H,#0H;A
      MOV 31H,#90
      SETB P3.4;A
      CLR P3.5;B
      SETB EA
XSDQMC:;显示当前以运行脉冲数.
      MOV 40H,#3FH
      MOV 41H,#0H
      MOV 42H,#0H
      MOV 43H,#0H
      MOV 44H,#80H
      MOV 45H,#80H
      MOV 46H,#80H
BAIWANWEI:ACALL SHIWANWEI;百万位
           MOV 46H,#86H;1
           ACALL SHIWANWEI
           MOV 46H,#0DBH;2
           ACALL SHIWANWEI
           MOV 46H,#0CFH;3
           ACALL SHIWANWEI
           MOV 46H,#0E6H;4
           ACALL SHIWANWEI
           MOV 46H,#0EDH;5
           ACALL SHIWANWEI
           MOV 46H,#0FDH;6
           ACALL SHIWANWEI
           MOV 46H,#87H;7
           ACALL SHIWANWEI
           MOV 46H,#0FFH;8
           ACALL SHIWANWEI
           MOV 46H,#0EFH;9
           ACALL SHIWANWEI
           AJMP XSDQMC;
 SHIWANWEI:ACALL WANWEI;十万位
           MOV 45H,#86H;1
           ACALL WANWEI
           MOV 45H,#0DBH;2
           ACALL WANWEI
           MOV 45H,#0CFH;3
           ACALL WANWEI
           MOV 45H,#0E6H;4
           ACALL WANWEI
           MOV 45H,#0EDH;5
           ACALL WANWEI
           MOV 45H,#0FDH;6
           ACALL WANWEI
           MOV 45H,#87H;7
           ACALL WANWEI
           MOV 45H,#0FFH;8
           ACALL WANWEI
           MOV 45H,#0EFH;9
           ACALL WANWEI
           MOV 45H,#0BFH;0
           RET
    WANWEI:ACALL QIANWEI;万位
           MOV 44H,#86H;1
           ACALL QIANWEI
           MOV 44H,#0DBH;2
           ACALL QIANWEI
           MOV 44H,#0CFH;3
           ACALL QIANWEI
           MOV 44H,#0E6H;4
           ACALL QIANWEI
           MOV 44H,#0EDH;5
           ACALL QIANWEI
           MOV 44H,#0FDH;6
           ACALL QIANWEI
           MOV 44H,#87H;7
           ACALL QIANWEI
           MOV 44H,#0FFH;8
           ACALL QIANWEI
           MOV 44H,#0EFH;9
           ACALL QIANWEI
           MOV 44H,#0BFH;0
           RET
   QIANWEI:ACALL BAIWEI;千位
           MOV 43H,#6H;1
           ACALL BAIWEI
           MOV 43H,#5BH;2
           ACALL BAIWEI
           MOV 43H,#4FH;3
           ACALL BAIWEI
           MOV 43H,#66H;4
           ACALL BAIWEI
           MOV 43H,#6DH;5
           ACALL BAIWEI
           MOV 43H,#7DH;6
           ACALL BAIWEI
           MOV 43H,#7H;7
           ACALL BAIWEI
           MOV 43H,#7FH;8
           ACALL BAIWEI
           MOV 43H,#6FH;9
           ACALL BAIWEI
           MOV 43H,#3FH;0
           RET
    BAIWEI:ACALL SHIWEI;百位
           MOV 42H,#6H;1
           ACALL SHIWEI
           MOV 42H,#5BH;2
           ACALL SHIWEI
           MOV 42H,#4FH;3
           ACALL SHIWEI
           MOV 42H,#66H;4
           ACALL SHIWEI
           MOV 42H,#6DH;5
           ACALL SHIWEI
           MOV 42H,#7DH;6
           ACALL SHIWEI
           MOV 42H,#7H;7
           ACALL SHIWEI
           MOV 42H,#7FH;8
           ACALL SHIWEI
           MOV 42H,#6FH;9
           ACALL SHIWEI
           MOV 42H,#3FH;0
           RET
SHIWEI:ACALL GEWEI;十位
       MOV 41H,#6H;1
       ACALL GEWEI
       MOV 41H,#5BH;2
       ACALL GEWEI
       MOV 41H,#4FH;3
       ACALL GEWEI
       MOV 41H,#66H;4
       ACALL GEWEI
       MOV 41H,#6DH;5
       ACALL GEWEI
       MOV 41H,#7DH;6
       ACALL GEWEI
       MOV 41H,#7H;7
       ACALL GEWEI
       MOV 41H,#7FH;8
       ACALL GEWEI
       MOV 41H,#6FH;9
       ACALL GEWEI
       MOV 41H,#3FH;0
       RET
GEWEI:MOV 40H,#3FH;0
      ACALL JISHU
      MOV 40H,#6H;1
      ACALL JISHU
      MOV 40H,#5BH;2
      ACALL JISHU
      MOV 40H,#4FH;3
      ACALL JISHU
      MOV 40H,#66H;4
      ACALL JISHU
      MOV 40H,#6DH;5
      ACALL JISHU
      MOV 40H,#7DH;6
      ACALL JISHU
      MOV 40H,#7H;7
      ACALL JISHU
      MOV 40H,#7FH;8
      ACALL JISHU
      MOV 40H,#6FH;9
      ACALL JISHU
      RET
;{以下为一大段,"JISHU"到"JNB1"上行为脉冲记数和判断是否到设定值.
;*****以下为判断是否到设定脉冲数程序***(内部模式才进入此程序)
JISHU:JB 05H,JNB15;判断是外部模式还是内部模式
      MOV A,45H;
      CJNE A,55H,JNB15;内部方式脉冲数保存位和当前位比较,不等转移.
      MOV A,44H
      CJNE A,54H,JNB15
      MOV A,43H
      CJNE A,53H,JNB15
      MOV A,42H
      CJNE A,52H,JNB15
      MOV A,41H
      CJNE A,51H,JNB15
      MOV A,40H
      CJNE A,50H,JNB15;跳到判断是否跳向设定电流
AJMP1:JB P3.2,JNB16;内部定时模式在此停止,当外部出现一定时间的连续低电平重起.
;以下延时抗干扰**
      MOV R4,#4;
      D16:MOV R5,#4;
      D15:DJNZ R5,D15;重起内部模式程序段,(抗干扰内部分)
      JB P3.2,JNB16;
      DJNZ R4,D16;
      JB P3.2,JNB16
;以上延时抗干扰
      SETB ET0;开启内部模式
      AJMP XSDQMC
JNB16:CLR ET0;关闭T0,既内部模式.
      JNB 00H,JNB1;
      AJMP AJMP1
      JNB15:JNB 00H,JNB1;判断是否跳向设定程序.
      JB 01H,JISHU;对脉冲记数转换位
      SETB 01H
      RET
;}以上为一大段,从"JISHU"到此处为对脉冲记数和对内部方式比较是否到设定数程序
JNB1:LJMP SHEDING
;***********接收脉冲中断服务程序**************************************
MONEY0:MOV TL0,35H;重装定时器TL0
       MOV TH0,36H;重装定时器TH0
MONEY1:MOV DPTR,#BIAO
       MOV A,30H;A的查表数据缓存区
       CJNE A,#180,D0;比较A的数据缓存是否到达最大值,46
       MOV 30H,#0H;当等于46时,移初始值到30H中
       MOV A,30H
       CPL P3.4;A,把P3.6取反,让A相电流反相
    D0:MOVC A,@A+DPTR;查表,并把对应值移入A中
       MOV p1,A;A
       CLR P3.6;A把数据写入到A相寄存器
       CLR P3.7;CS,WR
       SETB P3.7;CS,WR
       MOV A,31H;B
       CJNE A,#180,D1
       MOV 31H,#0H
       MOV A,31H
       CPL P3.5;B,把P3.7取反,让B相电流反相
    D1:MOV DPTR,#BIAO
       MOVC A,@A+DPTR
       MOV P1,A;B
       SETB P3.6;B把数值写入到B相寄存器
       CLR P3.7;CS,WR
       SETB P3.7
       MOV A,30H
       ADD A,32H;A
       MOV 30H,A
       MOV A,31H
       ADD A,32H;B
       MOV 31H,A
       CLR 01H
       ;CLR 04H;在其它程序中自动转向当前脉冲显示标志位
       RETI
;*********************细分真值表**************************************
BIAO:DB 0;0
     DB 4;1
     DB 9;2
     DB 13;3
     DB 18;4
     DB 22;5
     DB 27;6
     DB 31;7
     DB 35;8
     DB 40;9
     DB 44;10
     DB 49;11
     DB 53;12
     DB 57;13
     DB 62;14
     DB 66;15
     DB 70;16
     DB 75;17
     DB 79;18
     DB 83;19
     DB 87;20
     DB 91;21
     DB 96;22
     DB 100;23
     DB 104;24
     DB 108;25
     DB 112;26
     DB 116;27
     DB 120;28
     DB 124;29
     DB 128;30
     DB 131;31
     DB 135;32
     DB 139;33
     DB 143;34
     DB 146;35
     DB 150;36
     DB 153;37
     DB 157;38
     DB 160;39
     DB 164;40
     DB 167;41
     DB 171;42
     DB 174;43
     DB 177;44
     DB 180;45
     DB 183;46
     DB 186;47
     DB 189;48
     DB 192;49
     DB 195;50
     DB 198;51
     DB 201;52
     DB 204;53
     DB 206;54
     DB 209;55
     DB 211;56
     DB 214;57
     DB 216;58
     DB 219;59
     DB 221;60
     DB 223;61
     DB 225;62
     DB 227;63
     DB 229;64
     DB 231;65
     DB 233;66
     DB 235;67
     DB 236;68
     DB 238;69
     DB 240;70
     DB 241;71
     DB 243;72
     DB 244;73
     DB 245;74
     DB 246;75
     DB 247;76
     DB 248;77
     DB 249;78
     DB 250;79
     DB 251;80
     DB 252;81
     DB 253;82
     DB 253;83
     DB 254;84
     DB 254;85
     DB 254;86
     DB 255;87
     DB 255;88
     DB 255;89
     DB 255;90
     DB 255;91
     DB 255;92
     DB 255;93
     DB 255;94
     DB 254;95
     DB 254;96
     DB 254;97
     DB 253;98
     DB 253;99
     DB 252;100
     DB 251;101
     DB 250;102
     DB 249;103
     DB 248;104
     DB 247;105
     DB 246;106
     DB 245;107
     DB 244;108
     DB 243;109
     DB 241;110
     DB 240;111
     DB 238;112
     DB 236;113
     DB 235;114
     DB 233;115
     DB 231;116
     DB 229;117
     DB 227;118
     DB 225;119
     DB 223;120
     DB 221;121
     DB 219;122
     DB 216;123
     DB 214;124
     DB 211;125
     DB 209;126
     DB 206;127
     DB 204;128
     DB 201;129
     DB 198;130
     DB 195;131
     DB 192;132
     DB 189;133
     DB 186;134
     DB 183;135
     DB 180;136
     DB 177;137
     DB 174;138
     DB 171;139
     DB 167;140
     DB 164;141
     DB 160;142
     DB 157;143
     DB 153;144
     DB 150;145
     DB 146;146
     DB 143;147
     DB 139;148
     DB 135;149
     DB 131;150
     DB 128;151
     DB 124;152
     DB 120;153
     DB 116;154
     DB 112;155
     DB 108;156
     DB 104;157
     DB 100;158
     DB 96;159
     DB 91;160
     DB 87;161
     DB 83;162
     DB 79;163
     DB 75;164
     DB 70;165
     DB 66;166
     DB 62;167
     DB 57;168
     DB 53;169
     DB 49;170
     DB 44;171
     DB 40;172
     DB 35;173
     DB 31;174
     DB 27;175
     DB 22;176
     DB 18;177
     DB 13;178
     DB 9;179
     DB 4;180
SHEDING:CLR ET0;进入设定程序,屏蔽所有中断.(关闭T0,内部模式)
        CLR EX0;(关闭I0,外部模式)
        CLR EX1;关闭停电和设定中断源
        SETB 00H;关闭进入设定程序标志位,除非重新按设定键,避免循环进入.
        SETB 04H;停止进入当前脉冲显示,直到下次中断来临.
        MOV 40H,#3FH;进入设定程序后初始显示寄存器各值
        MOV 41H,#0H;同上
        MOV 42H,#0H;同上
        MOV 43H,#0H;同上
        MOV 44H,#80H;同上
        MOV 45H,#80H;同上
        MOV 46H,#80H;同上
;*************以下为程序方向设定程序***********
     FX0:MOV 40H,#6H;1显示为"1",表示此时为外部模式.
         MOV 41H,#0H
         MOV 42H,#0H
         MOV 43H,#0H
         MOV 44H,#0H
         MOV 45H,#0H
         MOV 46H,#0H
        SETB 05H;开启外部脉冲模式标志位,关闭内部定时模式.
        LCALL YANSHIC;延时长
DENGDAI:JB P2.2,DENGDAI
        JNB P2.1,JNB7
        JNB P2.0,FX1;
        AJMP XFBS;跳到设定细分倍数
   JNB7:JNB P2.0,DENGDAI
        AJMP TUICHU;退出
    FX1:MOV 40H,#5BH;显示为"0"表示为内部模式.
        CLR 05H;关闭外部脉冲模式标志位,开启内部定时模式.
        LCALL YANSHIC;延时长
DENGDAI1:JB P2.2,DENGDAI1;
         JNB P2.1,JNB8;按键1
         JNB P2.0,FX0;
        AJMP SPINLV;跳到设定频率
   JNB8:JB P2.0,DENGDAI1
 TUICHU:LJMP MONEY

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -