用汇编语言写个流水灯程序

发布时间:2023-01-13  

;************* 功能说明 **************

;程序使用P4.7 P4.6 P1.6 P1.7 来演示流水灯,输出低驱动。

Fosc_KHZ EQU 22118 ;22118KHZ

STACK_POIRTER EQU 0D0H ;堆栈开始地质

;*******************************************************

P4 DATA 0C0H

P0M1 DATA 0x93 ;

P0M0 DATA 0x94 ;

P1M1 DATA 0x91 ;

P1M0 DATA 0x92 ;

P2M1 DATA 0x95 ;

P2M0 DATA 0x96 ;

P3M1 DATA 0xB1 ;

P3M0 DATA 0xB2 ;

P4M1 DATA 0xB3 ;

P4M0 DATA 0xB4 ;

P5M1 DATA 0xC9 ;

P5M0 DATA 0xCA ;

P6M1 DATA 0xCB ;

P6M0 DATA 0xCC ;

P7M1 DATA 0xE1 ;

P7M0 DATA 0xE2 ;


ORG 0000H ;reset

LJMP F_Main

ORG 0003H ;0 INT0 interrupt

RETI

LJMP F_INT0_Interrupt

ORG 000BH ;1 Timer0 interrupt

LJMP F_Timer0_Interrupt

ORG 0013H ;2 INT1 interrupt

LJMP F_INT1_Interrupt

ORG 001BH ;3 Timer1 interrupt

LJMP F_Timer1_Interrupt

ORG 0023H ;4 UART1 interrupt

LJMP F_UART1_Interrupt

ORG 002BH ;5 ADC and SPI interrupt

LJMP F_ADC_Interrupt

ORG 0033H ;6 Low Voltage Detect interrupt

LJMP F_LVD_Interrupt

ORG 003BH ;7 PCA interrupt

LJMP F_PCA_Interrupt

ORG 0043H ;8 UART2 interrupt

LJMP F_UART2_Interrupt

ORG 004BH ;9 SPI interrupt

LJMP F_SPI_Interrupt

ORG 0053H ;10 INT2 interrupt

LJMP F_INT2_Interrupt

ORG 005BH ;11 INT3 interrupt

LJMP F_INT3_Interrupt

ORG 0063H ;12 Timer2 interrupt

LJMP F_Timer2_Interrupt

ORG 0083H ;16 INT4 interrupt

LJMP F_INT4_Interrupt

;******************** 主程序 **************************/

ORG 0100H ;reset

F_Main:

CLR A

MOV P0M1, A ;设置为准双向口

MOV P0M0, A

MOV P1M1, A ;设置为准双向口

MOV P1M0, A

MOV P2M1, A ;设置为准双向口

MOV P2M0, A

MOV P3M1, A ;设置为准双向口

MOV P3M0, A

MOV P4M1, A ;设置为准双向口

MOV P4M0, A

MOV P5M1, A ;设置为准双向口

MOV P5M0, A

MOV P6M1, A ;设置为准双向口

MOV P6M0, A

MOV P7M1, A ;设置为准双向口

MOV P7M0, A

MOV SP, #STACK_POIRTER

MOV PSW, #0 ;选择第0组R0~R7

L_MainLoop:

CLR P1.7

MOV A, #250

LCALL F_delay_ms ;延时250ms

LCALL F_delay_ms ;延时250ms

SETB P1.7

CLR P1.6

MOV A, #250

LCALL F_delay_ms ;延时250ms

LCALL F_delay_ms ;延时250ms

SETB P1.6

CLR P4.7

MOV A, #250

LCALL F_delay_ms ;延时250ms

LCALL F_delay_ms ;延时250ms

SETB P4.7

CLR P4.6

MOV A, #250

LCALL F_delay_ms ;延时250ms

LCALL F_delay_ms ;延时250ms

SETB P4.6

SJMP L_MainLoop

F_delay_ms:

PUSH 02H ;入栈R2

PUSH 03H ;入栈R3

PUSH 04H ;入栈R4

MOV R2,A

L_delay_ms_1:

MOV R3, #HIGH (Fosc_KHZ / 13)

MOV R4, #LOW (Fosc_KHZ / 13)

L_delay_ms_2:

MOV A, R4 ;1T Total 13T/loop

DEC R4 ;2T

JNZ L_delay_ms_3 ;4T

DEC R3

L_delay_ms_3:

DEC A ;1T

ORL A, R3 ;1T

JNZ L_delay_ms_2 ;4T

DJNZ R2, L_delay_ms_1

POP 04H ;出栈R2

POP 03H ;出栈R3

POP 02H ;出栈R4

RET

;**************** 中断函数 *****

F_Timer0_Interrupt: ;Timer0 1ms中断函数

RETI

F_Timer1_Interrupt:

RETI

F_Timer2_Interrupt:

RETI

F_INT0_Interrupt:

RETI

F_INT1_Interrupt:

RETI

F_INT2_Interrupt:

RETI

F_INT3_Interrupt:

RETI

F_INT4_Interrupt:

RETI

F_UART1_Interrupt:

RETI

F_UART2_Interrupt:

RETI

F_ADC_Interrupt:

RETI

F_LVD_Interrupt:

RETI

F_PCA_Interrupt:

RETI

F_SPI_Interrupt:

RETI

END


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ,具有更小代码量和更快的运行速度。可以参看文章:用 汇编 和 C语言流水灯程序有什么不一样? 因为单片机的RAM和Flash资源相比较小,运行速度也相对较低,所以,你会发现:很少有人在单片机......
    ();    Delay(50);  }} 编译出来的代码量相对更大: 然后,如果有开发板,直接下载即可运行LED闪烁的现象。 说明: 使用C++写单片机流水灯程序,实现的方法有很多,比如还有一些更高级的继承、多态......
    51单片机流水灯电路图大全;  51单片机流水灯电路图(一)   本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理......
    单片机控制花样流水灯原理图及程序;  AT89C51单片机流水灯c语言程序   1、首先先在proteus画出仿真图,方便仿真程序   2、下面来编写程序,先来写入头函数   3、根据......
    基于Keil、STM32,用C++编写流水灯程序;通常来说,在单片机上编程,要么汇编,要么C语言,而用C++进行开发的很少,那么究竟能不能用C++开发单片机呢?答案是肯定可以的,下面讲讲基于Keil......
    c语言编写单片机流水灯程序详解;用C语言编写的单片机流水灯程序的软件和硬件,可以让八个LED轮流点亮,每个灯点亮和熄灭时间均为1秒。是利用单片机I/O口控制外部设备的简单例子。当然,在你......
    我也玩单片机流水灯;一、点亮一个P1.0口的发光管 1、源代码 1 #include 2  #define uint unsigned int    //宏定义 3  #define......
    80C51单片机-LED流水灯效果(汇编版);本文将介绍一个基于8051单片机的跑马灯实验,通过编写汇编代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现流水灯......
    的ROM也在不断的提高,足够装得下你用C语言写的任何代码C语言的资料又多又好找,将来可移植性非常好,所以我劝大家用C语言。 总结上面,只要你有信心,做事能坚持到底,有不成功绝不放弃的强烈意志,那学个单片机......
    至4个指令周期。 除了以上区别,在保密性方面,PIC单片机不如51系列单片机,PIC单片机比较不能抗干扰,也很容易被解密。 03 PIC单片机环境C语言编程简介(pic单片机c语言) 相较于其他编程语言......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>