单片机C语言 两个按键控制8位花样流水灯,P1.0接按键k1,P1.1接按键k2,P0口的8位接8个发光二极管

单片机C语言 两个按键控制8位花样流水灯,P1.0接按键k1,P1.1接按键k2,P0口的8位接8个发光二极管,第1张

汇编程序如下:

花样流水灯(8个发光二极管以各种形式循环点亮)

功能:流水灯(8个发光二极管循环以1S间隔以各种形式循环点亮)

ORG H 伪指令,指定程序从H开始存放

LJMP MAIN 跳转指令,程序跳转至MAIN处执行

ORG H 伪指令,指定程序从H开始存放

MAIN: MO SP, #60H 给堆栈指针赋初值

MO P1,#0FFH 给P1口赋值

MO DPTR,#TABLE查表

LIGHT: MO R4,#42 设置循环次数

LOOP: MO A,#42 给A赋初值

SUBB A,R4 将A的值与R4的值相减,结果存在A中

MOC A,@A+DPTR 将A+DPTR的值所对应的TABLE中的值赋给A

MO P1,A 将A的值赋给P1口

LCALL DEL1S调用1S延时子程序

DJNZ R4,LOOP 判断R4是否为0,不为0跳转,为0顺序执行

LJMP LIGHT 跳转指令,跳转至LIGHT处继续执行

1S延时子程序(11.MHz晶振,误差0微秒)

DEL1S: MO R5, #H

DL1S0: MO R6, #0A4H

DL1S1: MO R7, #H

DJNZ R7, $

DJNZ R6, DL1S1

DJNZ R5, DL1S0

RET

TABLE: 定义表格数据

DB 0FFH 全灭

DB 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 07FH 依次逐个点亮

DB 0FEH 0FCH 0F8H 0F0H 0E0H 0C0H H H 依次逐个叠加

DB H 0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 0FFH 依次逐个递减

DB 07EH 0BDH 0DBH 0E7H 0E7H 0DBH 0BDH 07EH 两边靠拢后分开

DB 07EH 03CH H H H H 03CH 07EH 两边叠加后递减

DB H 全亮

END程序结束指令

C语言程序如下:

/* 该实验是花样流水灯(8个发光二极管以各种方式循环点亮),功能是花样流水灯(8个发光二极管以1S间隔以各种方式循环点亮) */

#include//包含reg.52文件

#define uint unsigned int//宏定义

#define uchar unsigned char//宏定义

void delay(uint z)//声明延时函数

uint a//定义循环用变量

uchar code table[]={

0xff,//全灭

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//依次逐个点亮

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐个叠加

0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐个递减

0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//两边靠拢后分开

0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//两边叠加后递减

0x00,//全亮

//¶¨ҥѭ»·Ӄʽ¾ݱ

/*Aµď֏

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7859201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存