51 单片机流水灯、定时器中断测试代码例程

我的公众号目前已搁置(临近注销),所以我将以前所写的文章转移到博客园。

此篇公众号文章创建于 2019-11-23 16:39,内容后期无修改。

不会创建工程的可以跳转:Keil C51 工程的创建(新手向)

例程可能只适用于我购买的单片机开发板,并不完全适合所有 51 单片机,使用测试例程前请检查该程序是否和您的单片机符合,若不符合请根据您的单片机具体情况更改程序。

流水灯测试例程#

例程效果:无需解释,就是流水灯

C 语言代码#

#include <intrins.h>  // 需要用到左右移函数
#include <reg52.h>

#define LED P2

// 延时函数
void delay(unsigned int i) {
    while (i--);
}

void main(void) {
    unsigned char i;

    LED = 0xfe;    // 1111 1110
    delay(50000);

    while (1) {
        for (i = 0; i < 7; i++) {
            LED = _crol_(LED, 1);  // 左移
            delay(50000);
        }
        for (i = 0; i < 7; i++) {
            LED = _cror_(LED, 1);  // 右移
            delay(50000);
        }
    }
}

汇编代码#

       ORG 0000H
       MOV A, #0FEH
MAIN:  MOV P2, A      ; LED1 亮
       ACALL DELAY
WHILE: MOV B, #7      ; 赋值移动次数 7 次
LEFT:  RL A           ; 左移
       MOV P2, A
       ACALL DELAY    ; 调用延时
       DJNZ B, LEFT
       MOV B, #7      ; 再次赋值 7 次
RIGHT: RR A           ; 右移
       MOV P2, A
       ACALL DELAY    ; 调用延时
       DJNZ B, RIGHT
       AJMP WHILE     ; 循环
DELAY: MOV R0, #0FFH  ; 延时
DL2:   MOV R1, #0FFH
DL1:   NOP
       NOP
       DJNZ R1, DL1
       DJNZ R0, DL2
       RET
       END

定时器中断测试例程#

例程效果:和上述流水灯效果很类似,只不过这个是单向流水灯

C 语言代码#

#include "reg52.h"
#include "intrins.h"

#define LED P2

void main(void) {
    LED = 0xFE;   // 最低位 led 亮

    TMOD |= 0X10; // 定时器 1 方式 1
    TH1 = 0X3C;
    TL1 = 0XB0;
    ET1 = 1;
    EA = 1;       // 开启总中断开关
    TR1 = 1;      // 开启 T1 开关
    while(1);
}

void Timer1() interrupt 3 {
    TH1 = 0X3C;
    TL1 = 0XB0;

    LED = _crol_(LED, 1);  // 左移
}

汇编代码#

       ORG 0000H
MAIN:  MOV A, #0FEH
WHILE: MOV P2, A
       MOV TMOD, #010H  ; 定时器 1 方式 1
       MOV TH1, #03CH
       MOV TL1, #0B0H
       SETB TR1         ; 启动 T1 工作
WAIT:  JBC TF1, START   ; 等于 1 时,则清零并跳转
       SJMP WAIT
START: RL A
       SJMP WHILE
       END

作者:xiaoaug

出处:https://www.cnblogs.com/xiaoaug/p/17269134.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   滑稽果  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
浏览器标题切换
浏览器标题切换end
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示