您好,欢迎您来到电子设计宝库网! ,新用户?[免费注册]

广告位置
栏目导航
网站帮助中心
下载排行
文章排行

电机星三角启动控制程序

【字体: 】【收藏】【打印文章】【查看评论

说明:
程序可调的星形转三角形时间为255秒,因要控制录制文件的大小,这里我们设定星三角形转换时间为5秒

;**************************************************************
;星三角启动循环显示程序
;功能:按P3.2启动,p3.5停止,P3.3延时时间加1S,P3.4延时时间减1S
; 改变时间请先按下P3.5,关闭定时中断,改完按p1.2启动
; 运行时,延时时间为倒计时(最大255s)
; P1.0灯启动指示,P1.1,P1.2灯星形启动,P1.1,P1.3三角形启动
;本程序在本站成功一号学习套件上实测通过,本站客户可在成功一号,潇湘普及版及其它套件上直接实验。
;中国单片机资讯网版权所有,如需转载,请注明作者及出自于中国单片机资讯网www.c51.cn/
;作者:邓德武----逸飞
;2006年3月8日0:27
;***************************************************************

time equ 30h
ge_bit equ 31h
shi_bit equ 32h
bai_bit equ 33h
org 0000h
ajmp MAIN
org 000bh ;定时器T0中断程序入口
ljmp intt0 ;跳至INTTO执行

org 0040h
MAIN:
CLR p2.0
MOV P1,#0FFH
MOV TIME,#255
MOV R0,#255
MOV TMOD,#11H ;设T016位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOV TH0,#3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
MOV R4,#14H ;1秒定时用初值(50MS×20)

START:
CALL SCANKEY
CALL DISPLAY
AJMP START

;**************************************************************
; 键盘扫描程序
;**************************************************************
scankey:
jb p3.2,add_1p
call delay10ms
jb p3.2,add_1p
MOV R0,TIME
deng1:
call display
jnb p3.2,deng1
SETB ET0 ;开放T0中断
SETB TR0 ;开启T0定时?
clr p1.0
clr P1.1
clr P2.6
setb p2.7

add_1p:
jb p3.3,dec_1p
call delay10ms
jb p3.3,dec_1p
deng2:
call display
jnb p3.3,deng2
mov a,#1
add a,r0
mov r0,a
mov time,a
cjne a,#255,dec_1p
mov r0,#1
mov time,#1

dec_1p:
jb p3.4,stopkey
call delay10ms
jb p3.4,stopkey
deng3:
call display
jnb p3.4,deng3
dec r0
mov a,r0
mov time,a
cjne a,#0,stopkey
mov r0,#255
mov time,#255

stopkey:
jb p3.5,stop_out
call delay10ms
jb p3.5,stop_out
clr TR0
deng4:
call display
jnb p3.5,deng4
mov r0,time
MOV TL0,#0B0H ;50MS定时初值
MOV TH0,#3CH ;50MS定时初值
mov r4,#14h
stop_out:
ret

;**************************************************************
; 中断服务程序
;**************************************************************
;T0中断服务程序
INTT0: PUSH ACC ;累加器入栈保护
PUSH PSW ;状态字入栈保护
CLR ET0 ;关T0中断允许
CLR TR0 ;关闭定时器T0
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOV TH0,#3CH ;50MS定时初值
DJNZ R4, OUTT0 ;20次中断未到中断退出
ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值
DJNZ R0, OUTT0
CLR TR0
CPL P2.6
CPL P2.7
AJMP OUT1
OUTT0:
POP PSW ;恢复状态字(出栈)
POP ACC ;恢复累加器
SETB ET0 ;开放T0中断
SETB TR0 ;开启定时器T0
OUT1:
RETI ;中断返回

;**************************************************************
; 显示子程序
;**************************************************************
Display:
mov a,r0
mov b,#100;求转换结果百位
div ab;
mov bai_bit,a
mov a,b
mov b,#10;求转换结果十、个位
div ab
mov shi_bit,a
mov ge_bit,b;

setb p2.2
mov DPTR,#tab
mov a,ge_bit
movc a,@a+dptr
mov p0,a
clr p2.0
call delay1ms

setb p2.0
mov DPTR,#tab
mov a,shi_bit
movc a,@a+dptr
mov p0,a
clr p2.1
call delay1ms

setb p2.1
mov DPTR,#tab
mov a,bai_bit
movc a,@a+dptr
mov p0,a
clr p2.2
call delay1ms
ret

delay1ms:
;约10ms
mov r7,#2
del2:
mov r6,#248
del1:
djnz r6,del1
djnz r7,del2
ret

delay10ms:
mov r5,#3
del10:
call display;以免按鍵时无显示
djnz r5,del10
ret

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;共阳段码表 "0""1""2" "3""4""5""6""7" "8""9
;
end


如果以上文章还没有能解决您的问题你可以到问答区去向几万高手提问我要提问
一般般,踩一脚 太深奥,看不懂 好文章,顶一下 路过,留个脚印
  • 上一篇:本产配套ADC0804实验教程