定时器---实现流水灯循环移位点亮

程序功能:用T0计时器,采用方式1实现流水灯的循环移位点亮。

声明:采用T0技术,工作于方式1

间隔1秒点亮,定时50ms,20次。

初值计算:65536-50000=3CB0H

;利用T0产生1s定时
    ORG     0000H
    AJMP    MAIN        ;
    ORG     000BH       ;T0定时服务子程序入口地址
    AJMP    SERVE       ; 

    ORG    0100H        ;
MAIN:MOV   SP,#60H      ;
    MOV    B,#14H       ;20次
    MOV    TMOD,#01H    ;设置方式1
    MOV    TL0,#0B0H    ;定时器赋初值
    MOV    TH0,#3CH     ;
    SETB    TR0         ;启动T0
    SETB    ET0         ;开启T0中断
    SETB    EA          ;开启总中断
    MOV    P1,#01111111B; LED7点亮
    SJMP    $          ; 

SERVE:MOV   TL0,#0B0H   ;
    MOV    TH0,#3CH
    DJNZ    B,LOOP      ;
    MOV    B,#14H       ;
    MOV    A,P1         ;
    RR      A           ;循环右移
    MOV P1,A            ;
LOOP:RETI               ;中断返回
    END
时间: 2024-10-17 07:03:43

定时器---实现流水灯循环移位点亮的相关文章

点亮流水灯--位移法

点亮流水灯之位移法 1 #include <reg51.h> 2 #include <stdio.h> 3 //延时函数 4 void delay(){ 5 int i=10000; 6 //用while循环来做兜底循环 7 while(i--); 8 } 9 //主函数 10 void main(void) 11 { 12 int i; 13 char p; 14 while(1) 15 { 16 //点亮第一盏灯 17 P2=0xfe; 18 //调用延时函数 19 delay

点亮流水灯--数组法

/* Main.c file generated by New Project wizard * * Created: 周一 五月 8 2017 * Processor: 80C51 * Compiler: Keil for 8051 */ #include <reg51.h> #include <stdio.h> //延时函数 void delay(){ int i=10000; //用while循环来做兜底循环 while(i--); } //主函数 void main(voi

永远的流水灯(Verilog)

1. 为了更好地学习FPGA和深入理解Verilog语法,首先从最简单的流水灯做起.虽然简单,但是也包含了不少知识.通过这次实验项目,可以了解开发软件的使用及Verilog的编程方法,熟悉模块化设计的方法. 2. 该项目主要实现的功能为: (1)10位的流水灯 (2)中间两个led灯每隔100ms闪烁一次 (3)两边的led灯每隔100ms流动一下,从中间向两边流水. 3.  具体实现如下 (1)首先定义一个时间计数寄存器counter,每当达到预定的100ms时,计数寄存器就清零,否则的话寄存

单片机教程4.C语言基础以及流水灯的实现

单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式带着大家学习C语言. 1.1 二进制.十进制和十六进制 看似很简单的东西,但是从同学们学习视频的情况来看,很多同学不能彻底明白.这里先简单介绍一些注意事项,然后还是从实验中讲解会比较深刻. 1.十进制就不多说了,逢十进位,一个位有十个值:0-9,我们的生活中到处都是它的身影.二进制就是逢二进位,它的

Qt利用代码实现流水灯的效果

用代码实现流水灯的效果 其实很想实现这种流水灯的效果了,看起来挺酷的,用处也很多,只是开始没有思路不知道怎么去实现,于是在我的超市收银项目中就采用了图片加载的方式进行显示,效果如下图所示: 由于是动态图片,显示的时候就要用到QMovie进行加载,简单的代码如下所示: QMovie *move = new QMovie(":/images/splash.gif"); QLabel *label = new QLabel("",0); label->setWind

四位流水灯Led_4

流水灯实验是我们学习开发板或语言的入门程序,通过流水灯这个可视化的实验,会增加我们对学习语言的乐趣, 会让我们觉得其实语言也是可以玩出花样的,接下来呈上代码,大家可以下到自己的板子里试试,. //Led_4.v module Led_4(clk,rst,led); input clk; input rst; output [3:0] led; reg [3:0] led; always @(posedge clk or negedge rst) begin if(!rst) begin led

51单片机第一弹---流水灯

转行搞硬件..acm算是走到头了,毕竟电子是自己专业的特色.. 初撸单片机,买的板子是STC89C52(某宝58大洋淘来的..) 郭天祥新概念的那本书(好像有点不配套不过凑活着弄了也..) 说一下容易犯的错误吧. 1.串口驱动搞了1个多小时..一直安装不上,后来跟着教程做的 2.书上写的控制LED端口的是P1 ,但实际上买的这快板子是P2 ,最开始搞了半天老是点不亮灯,后来一想会不会端口错了,换成0试试?换了不行,又换了2..亮了(这是个问题,以后要找学长问问,怎么根据开发板看出来每个模块的端口

流水灯之并行操作

流水灯 功能描述: 10个led灯 从第一个和最后一个led灯开始从两边向中间闪烁,闪烁频率为0.5s一次 项目实现 首先定义一个计时器 计数器的名字为count1,如果复位或者count1==2.5s时复位,否则count1加1,开发板晶振50M 当计数达到TIME=2.5s/(1/50M)-1=124_999_999次数的时候,即为2.5s具体代码为:[email protected](posedge CLK or negedge RSTn)   if(!RSTn)    Count1<=2

流水灯的按键方向控制

module liushuideng( clk,rst_n,led_0,sw1_n,sw2_n,sw3_n);input clk; //时钟信号,50MHZinput rst_n; //复位信号,低电平有效input sw1_n,sw2_n,sw3_n; //三个独立按键,低表示按下output[3:0] led_0; //流水灯,0--灭,1--不灭//--------------------------------------------------------reg led_dir; //