单片机课设部分代码及注释、流程图
ORG 0000H // ORG 是汇编中的伪指令。
ORG 0000H 表示后面紧跟的那条指令的地址是 0000H
LJMP MAIN //跳主程序 且 这条指令的地址是0000H
ORG 000BH
LJMP ITOP //跳中断处理子程序
ORG 0100H
MAIN:MOV SP,#60H //栈指针,设置堆栈的长度为60H byte
//给定时器一个频率,T0进入计数初值 e.g.加入设置了6w的频率,变成二进制,前8位给TH0,后8位给TL1
MOV TH0,#0ECH //给它的高八位设置
MOV TL0,#77H //低八位
MOV 88H,#00H ???我觉得不需要 //把88H置为0
//准备工作,各种初始化
*/TMOD是51单片机内的定时器寄存器名称,Timer Mode:为定时模式;
TMOD = 10 h 表示的是定时器1设置为方式1。
TMOD = 01 h 表示的是定时器0设置为方式1。*/
MOV TMOD,#01H //方式1,10次为1s起定时作用
//单片机中指令SETB代表什么意思 :
SETB是MCS-51的位操作命令 SETB ET0 ;开定时/计数器0允许 SETB是汇编指令,意思是把其后面的那个寄存器的位置1. ET0是定时/计数器0的中断容许位,为1时,单片机会响应定时/计数器0的溢出中断(当然,总中断也必须容许).为0时,单片机不响应.
SETB ET0 //允许T0溢出断
//把ET0置为1.这会导致单片机会响应定时/计数器0的溢出中断SETB TR0 ;
定时/计数器0开始运行 TR0是单片机会响应定时/计数器0的启动位,
为1,就启 动定时/计数器0;
为0,就停止定时/计数器0的运行.
SETB 是指将后面的位置1,ET0是定时器/计数器0的中断允许位,这句的意思就是程序允许定时器、计数器0中断
SETB EA // 允许单片机总断
SETB TR0 //TR0 是单片机定时器/计数器的计数开始位,为1时开始计数,为0时停止。
LCALL FUNCINIT //初始化时钟
LOOP: LCALL KBS //主程序,不断扫描建盘,读取信息
CJNE A,#10H,NEXT //A是系统内置的,接收按键的信息;相当于从键盘输入的值
//判断是否有键按下,有则跳转
LCALL DISP //disp显示数码管
SJMP LOOP
NEXT:LCALL KBS //主程序,不断扫描建盘,读取信息
CJNE A,#10H,LOOP1 //判断是否有键按下,有则跳转LOOP1
SJMP LOOP
LOOP1:LCALL KBS //主程序,不断扫描建盘,读取信息
KBA:CJNE A,#0AH,KBB //按键A 功能为开始和暂停
CPL TR0 //反转电平,启动的意思?
CPL直接寻址位取反
SJMP WAIT
KBC:CJNE A,#0CH,LOOP //按键C 清零
CLR TR0
LCALL FUNCINIT
MOV 30H,#31H
WAIT:LCALL DISP //disp显示数码管
LCALL KBS //主程序,不断扫描建盘,读取信息
CJNE A,#10H,WAIT
SJMP LOOP
SJMP $ //死循环
FUNCINIT:CLR A
MOV 70H,A
MOV 71H,A
MOV 72H,A
MOV 73H,A
MOV 74H,A
MOV 75H,A
RET
ITOP:PUSH AC
MOV TMOD,#01H
MOV TH0,#0ECH
MOV TL0,#77H
INC 70H
MOV A,70H
CJNE A,#10,LOOPI
MOV 70H,#00H
INC 71H
MOV A,71H
CJNE A,#10,LOOPI
MOV 71H,#00H
INC 72H
MOV A,72H
CJNE A,#10,LOOPI
MOV 72H,#00H
INC 73H
MOV A,73H
CJNE A,#06,LOOPI
MOV 73H,#00
INC 74H
MOV A,74H
CJNE A,#10,LOOPI
MOV 74H,#00
INC 75H
MOV A,75H
CJNE A,#06,LOOPI
MOV 75H,#00H
LOOPI:POP ACC
RETI
ORG 0000H // ORG 是汇编中的伪指令。
ORG 0000H 表示后面紧跟的那条指令的地址是 0000H
LJMP MAIN //跳主程序 且 这条指令的地址是0000H
ORG 000BH
LJMP ITOP //跳中断处理子程序
ORG 0100H
MAIN:MOV SP,#60H //栈指针,设置堆栈的长度为60H byte
//给定时器一个频率,T0进入计数初值 e.g.加入设置了6w的频率,变成二进制,前8位给TH0,后8位给TL1
MOV TH0,#0ECH //给它的高八位设置
MOV TL0,#77H //低八位
MOV 88H,#00H ???我觉得不需要 //把88H置为0
//准备工作,各种初始化
*/TMOD是51单片机内的定时器寄存器名称,Timer Mode:为定时模式;
TMOD = 10 h 表示的是定时器1设置为方式1。
TMOD = 01 h 表示的是定时器0设置为方式1。*/
MOV TMOD,#01H //方式1,10次为1s起定时作用
//单片机中指令SETB代表什么意思 :
SETB是MCS-51的位操作命令 SETB ET0 ;开定时/计数器0允许 SETB是汇编指令,意思是把其后面的那个寄存器的位置1. ET0是定时/计数器0的中断容许位,为1时,单片机会响应定时/计数器0的溢出中断(当然,总中断也必须容许).为0时,单片机不响应.
SETB ET0 //允许T0溢出断
//把ET0置为1.这会导致单片机会响应定时/计数器0的溢出中断SETB TR0 ;
定时/计数器0开始运行 TR0是单片机会响应定时/计数器0的启动位,
为1,就启 动定时/计数器0;
为0,就停止定时/计数器0的运行.
SETB 是指将后面的位置1,ET0是定时器/计数器0的中断允许位,这句的意思就是程序允许定时器、计数器0中断
SETB EA // 允许单片机总断
SETB TR0 //TR0 是单片机定时器/计数器的计数开始位,为1时开始计数,为0时停止。
LCALL FUNCINIT //初始化时钟
LOOP: LCALL KBS //主程序,不断扫描建盘,读取信息
CJNE A,#10H,NEXT //A是系统内置的,接收按键的信息;相当于从键盘输入的值
//判断是否有键按下,有则跳转
LCALL DISP //disp显示数码管
SJMP LOOP
NEXT:LCALL KBS //主程序,不断扫描建盘,读取信息
CJNE A,#10H,LOOP1 //判断是否有键按下,有则跳转LOOP1
SJMP LOOP
LOOP1:LCALL KBS //主程序,不断扫描建盘,读取信息
KBA:CJNE A,#0AH,KBB //按键A 功能为开始和暂停
CPL TR0 //反转电平,启动的意思?
CPL直接寻址位取反
SJMP WAIT
KBC:CJNE A,#0CH,LOOP //按键C 清零
CLR TR0
LCALL FUNCINIT
MOV 30H,#31H
WAIT:LCALL DISP //disp显示数码管
LCALL KBS //主程序,不断扫描建盘,读取信息
CJNE A,#10H,WAIT
SJMP LOOP
SJMP $ //死循环
FUNCINIT:CLR A
MOV 70H,A
MOV 71H,A
MOV 72H,A
MOV 73H,A
MOV 74H,A
MOV 75H,A
RET
ITOP:PUSH AC
MOV TMOD,#01H
MOV TH0,#0ECH
MOV TL0,#77H
INC 70H
MOV A,70H
CJNE A,#10,LOOPI
MOV 70H,#00H
INC 71H
MOV A,71H
CJNE A,#10,LOOPI
MOV 71H,#00H
INC 72H
MOV A,72H
CJNE A,#10,LOOPI
MOV 72H,#00H
INC 73H
MOV A,73H
CJNE A,#06,LOOPI
MOV 73H,#00
INC 74H
MOV A,74H
CJNE A,#10,LOOPI
MOV 74H,#00
INC 75H
MOV A,75H
CJNE A,#06,LOOPI
MOV 75H,#00H
LOOPI:POP ACC
RETI
流程图如下:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
