专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

STC单片机I/O口控制程序(两个不同的跑马灯效果)

作者:佚名   来源:本站原创   点击数:  更新时间:2013年12月08日   【字体:
STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强.控制灵活!且价格便宜!也就几块钱吧!但你让她发挥出了性能,就不止几块钱了哦!单片机叫什么?o(∩_∩)o...微型计算机···
                                                                                       ORG  000H   ;起始地址
                                                                             START:         ;开始
                                                                                          MOV R2,#10;设置循环次数
                                                                                    D0:
                                                                                         MOV  R0,#8  ;设置左移次数
                                                                                          MOV  A,#07FH;向A寄存器输入初始值
                   
                                                                                           D2: RL  A;将A中数据向左移一位
                                                                                                    CALL DL;调入延时
                                                                                                MOV P1,A;输出到P1口
                                                                                               DJNZ  R0,D2;检测是否左移八次,否则继续执行左移命令
                                                                                                   MOV  R1,#7;设置右移次数
                                                                                         D3: RR   A;将A中数据向右移一位
                                                                                                CALL DL;调入延时
                                                                                                MOV P1,A;将A中数据输出到P1口
                                                                                                MOV P0,A;并联输出至P0口
                                                                                                DJNZ R1,D3;检测是否右移了七次,否则继续执行右移命令
                                                                                                 DJNZ R2,D0;检测是否循环了十次,否则继续循环
                                                                                                  MOV A,#0FFH;向A中载入新数据
                                                                                              D4:SUBB A,#01;执行减法运算
                                                                                                     CALL  DL1;调入延时程序1
                                                                                                      MOV R3,A;将A中数据传送给R3
                                                                                                     MOV  P1,R3;将R3(寄存器)中数据输出至P1口
                                                                                                    DJNZ R3,D4;检测R3是否为零,否则继续执行减法运算
                                                                                                     JMP  START;跳到开始执行
                                                                                            DL1:    MOV  R7,#90;延时程序1
                                                                                                 L4:  MOV  R6,#20
                                                                                                 L3:  MOV R5,#50
                                                                                                         DJNZ  R5,$
                                                                                                          DJNZ  R6,L3
                                                                                                          DJNZ  R7,L4
                                                                                                           RET   ;子程序返回
                         
                                                                                                            DL:             ;延时程序
                                                                                                                   MOV   R3,#20
                                                                                                                   L1:MOV  R4,#15
                                                                                                                    L2:MOV  R5,#50
                                                                                                                          DJNZ  R5,$
                                                                                                                          DJNZ  R4,L2
                                                                                                                          DJNZ  R3,L1
                                                                                                                           RET  ;子程序返回
                                                                                                                            END  ;结束
                                                                                            
                                                                                                                         编程:蓝色梦幻
                                                                                                                          2013年6月9日
关闭窗口

相关文章