中断定时器与流水灯

发布者:悦耳旋律最新更新时间:2018-05-13 来源: eefocus关键字:中断定时器  流水灯 手机看文章 扫描二维码
随时随地手机看文章

此程序为设置Led流水灯与数码管第0一位的0-16数字循环亮。不能将数码管程序放进主函数里,因为延迟函数delay,可能会在add自加到40时刚好在dalay里面,这时不会有数码管的闪烁。


#include

#include

#define uchar unsigned char

#define uint unsigned int


sbit wela=P2^7;          //位选

sbit dula=P2^6;          //段选

int num,add,temp=0xfe;

uchar code table[]={0x3f,0x06,0x5b,0x4f,

                    0x66,0x6d,0x7d,0x07,

                    0x7f,0x6f,0x77,0x7c,

                    0x39,0x5e,0x79,0x71};

void delay(uchar n);

void main()

{


    TMOD=0x01;     //工作方式

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;


    EA=1;           //总中断打开

    ET0=1;          //定时器中断打开

    TR0=1;          //定时器打开


    wela=1;

    P0=0xfe;

    wela=0;

    dula=1;

    P0=table[0];

    dula=0;         //数码管初始化


    P1=temp;        //Led灯初始化


    while(1)

    {


        delay(100);

delay(500);

        temp=_crol_(temp,1);

        P1=temp; 

    }


}


void add_1() interrupt 1       //计时器中断函数

{

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    add++;

    if(add==40)

    {

        num++;

        add=0;          

        dula=1;

        P0=table[num];

        if(num==16)

        num=-1;

    }

                                //流水灯延迟函数

void delay(uchar n)

{

    int i=0, j=0; 

    for(i=0; i

        for(j=0; j<125; j++)

            ;

}


关键字:中断定时器  流水灯 引用地址:中断定时器与流水灯

上一篇:中断及定时器实现时钟功能
下一篇:基于51单片机的pwm和串口通信

推荐阅读最新更新时间:2024-03-16 16:02

单片机流水灯小程序
ORG 0000H AJMP START ORG 0030H START: SETB P1.0 ACALL DELAY MOV P1,#00H CLR P1.0 ACALL DELAY SETB P1.1 ACALL DELAY MOV P1,#00H CLR P1.1 ACALL DELAY SETB P1.2 ACALL DELAY MOV P1,#00H CLR P1.2 ACALL DELAY SETB P1.3 ACALL DELAY MOV P1,#00H CLR
[单片机]
arm力天电子 lpc2148流水灯驱动程序详解
一个破流水灯程序看了两天了,void WriteByte(unsigned char data)这部分还是没看懂,力天电子上面介绍说这部分三端口的数据输入,选出8位的串行数据。 选择16,17,18,19四个控制位,主要跟电路图的连接有关,4块74HC595,组成32位(如图所示),从下往上依次是0~31为,图中写反了。因此到D13对应的引脚应该是16,D12对应的是17,D11对应的是18,D10对应的是19. 当16,17,18,19分别为低电平时二极管才能够导通发光。高电平时熄灭 1#include NXP/iolpc2148.h 2#define SCLK 0x01 24 //指定P1.24管脚,通过
[单片机]
arm力天电子 lpc2148<font color='red'>流水灯</font>驱动程序详解
51单片机的定时器中断(寄存器)
中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。 此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。 其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。 1.中断允许寄存器IE 图1.中断寄存器IE 中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器运行位寻址,即可对该
[单片机]
51单片机的<font color='red'>定时器</font><font color='red'>中断</font>(寄存器)
stm32f103定时器中断
stm32为我们提供了8个定时器,分为:通用是定时器(TIM2~TIM5),高级定时器(TIM1和TIM8),基本定时器(TIM6和TIM7)。 至于三者之间的区别可以参考以下博客:https://blog.csdn.net/dukai392/article/details/72058041 本次我们主要讨论的是通用定时器的基本知识以及更新中断的配置过程。 通用定时器框图如下: 由于stm32的定时器十分复杂,功能特多而本次我们只讨论他的计数跟新功能(定时)。 时钟的选择: 由框图中红色部分可知定时器的时钟来源有三个:内部时钟(CK_INT),外部时钟(TIMx_ETR),其他定时器的时钟(ITR0-ITR
[单片机]
stm32f103<font color='red'>定时器</font><font color='red'>中断</font>
51 单片机:在 P0 口接上 8 个 LED,实现每次亮两个灯的流水灯
要求:每次亮相邻两个灯,分别闪烁五次后,移动一位,汇编。 做而论道编程如下: ;------------------------ ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R2, #0FCH MOV A, #1 ;------------------------ LOOP: MOV P0, R2 ;亮两位 CALL FLASH ;闪一位 RL A CALL FLASH ;闪下一位 XCH A, R2 RL A XCH A, R2 LJMP LOOP ;
[单片机]
LPC2103流水灯
#include inc\lpc2103.h #include inc\config.h #define uchar unsigned char #define uint unsigned int void Sys_Init(void) { PINSEL0=0x00000000;//使用GPIO功能,将所有的管脚连接到GPIO PINSEL1=0x00000000;//使用GPIO功能,将所有的管脚连接到GPIO IO0DIR=1 17 | 1 18 | 1 19;//设置IO口管脚的方向,相应位置1为输出, IO0SET=1 17 | 1 18 | 1 19;//初始化IO电平,IOSET对应位置
[单片机]
单片机花样流水灯c语言程序
程序代码如下 #include reg51.h #define uchar unsigned char #define uint unsigned int uchar code Pattern_P0 = { 0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE7,0xD8,0xBD,0x7E,0xBD,0xDB,0xE7,0xFF,0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF, 0xAA,0x55,0x18,0xFF,0xF0,0x0F,0x00,0xFF,0xF8,0xF1,
[单片机]
51单片机定时器计数器中断总结
一.TMOD:定时器计数度器模式寄存器 M1M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。 1. 工作方式1 工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。 工作方式2 在介绍这种式方式之前先让我们思考一个问题:上一次课我们提到过任意计数及任意定时的问题,比如我要计1000个数,可是16位的计数器要计到65536才满(若初值为0,记数1后变成0001H,计数65535后变成0FFFFH,再计数1次变成65536,溢出了,各位都为0了,然后申请中断。所以是能计数65536个的,虽然最后一次溢出了。),怎么办呢?我们讨论后得出的办法是用预置数,先在
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved