单片机课设部分代码及注释、流程图

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   

//准备工作,各种初始化

*/TMOD51单片机内的定时器寄存器名称,Timer Mode:为定时模式;

TMOD = 10 h 表示的是定时器1设置为方式1

TMOD = 01 h 表示的是定时器0设置为方式1*/

MOV TMOD,#01H    //方式110次为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   

//准备工作,各种初始化

*/TMOD51单片机内的定时器寄存器名称,Timer Mode:为定时模式;

TMOD = 10 h 表示的是定时器1设置为方式1

TMOD = 01 h 表示的是定时器0设置为方式1*/

MOV TMOD,#01H    //方式110次为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

流程图如下:


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部