历史上的今天
返回首页

历史上的今天

今天是:2026年01月13日(星期二)

正在发生

2023年01月13日 | 用汇编语言写个流水灯程序

2023-01-13 来源:zhihu

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

;程序使用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


推荐阅读

史海拾趣

西安航天民芯公司的发展小趣事

除了商业产品的研发外,西安航天民芯还积极承担国家重大科研项目。公司参与了我国工业强基高性能工业DSP芯片等多项国产化项目的研发工作,为提升国家产业核心竞争力做出了贡献。这些项目的成功实施,进一步提升了西安航天民芯在行业内的影响力和地位。

康龙(CONCRAFT)公司的发展小趣事

面对电子行业的快速变化和发展趋势,康龙公司积极拥抱数字化转型。公司引入了先进的ERP系统和数字化工具,实现了从供应链、生产管理到财务管理的全面信息化。这不仅提高了公司的运营效率和管理水平,还为公司的产业升级和未来发展奠定了坚实基础。

Esterline Power Systems公司的发展小趣事

在质量管理方面,Esterline Power Systems始终坚持以客户为中心,追求卓越品质。公司引入了先进的质量管理体系,并通过了ISO 9001等国际标准认证。同时,公司还建立了严格的质量检测机制,确保每一件产品都符合高标准的质量要求。此外,公司还鼓励员工提出改进建议,通过持续改进来不断提升产品质量和客户满意度。

Curtis Instruments Inc公司的发展小趣事

1995年,Curtis在中国建立了独资企业科蒂斯仪器(中国)有限公司,其制造工厂于1997年投入生产。经过近20年的发展,Curtis在中国已经建立了完善的生产、研发和销售体系。2012年,Curtis在苏州工业园区成立了独立的科蒂斯技术(苏州)有限公司,进一步提升了在中国的研发和生产能力。如今,Curtis中国已成为Curtis在全球的第6个研发中心,也是中国最现代化的生产电动车辆驱动控制系统的厂商之一。

Amptek Inc公司的发展小趣事

在上世纪60年代至70年代的阿波罗登月计划期间,Curtis的技术和产品被美国航空航天局(NASA)广泛应用。在每个登月舱中,NASA都装备了多个Curtis消逝时间指示器,用于监控电力系统的运行情况。同时,阿波罗月球行走车上也安装了Curtis的电子电量安培小时计,以监控电池的使用情况。这些高精度、高可靠性的产品为NASA的太空任务提供了强有力的技术支撑。

Altmustech公司的发展小趣事

随着业务规模的不断扩大,Altmustech开始实施全球化布局战略。公司在全球范围内设立研发中心和生产基地,与各地合作伙伴建立紧密的合作关系。这一战略使得公司能够更好地利用全球资源,提高生产效率,降低成本,同时也有助于提升公司在国际市场上的竞争力。

问答坊 | AI 解惑

电路设计

两个接收线圈,接收信号,有一个为基准,产生两路信号,我想产生一个信号就是两路信号的和作为基准!…

查看全部问答>

求助:一个quartus工具设置的问题

如图所示,我每开个文件就打开个新的窗口,就像IE浏览器一样,这样用起来很不方便,如何设置使文件窗口像遨游浏览器等那样显示文件,鼠标一点就切换,而不用每次换个文件就要将窗口最小化再换文件。或者扎样能使quartus回到默认设置,默认设置下就 ...…

查看全部问答>

请教这两个语句一样吗?

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)群主:wangkj 请教个问题 GPBCON = (…

查看全部问答>

从NOR FLASH可启动,NAND FLASH不行

CPU是S3C2440,64M SDRAM,2M NOR FLASH,64M NAND FLASH。 NOR FLASH启动,可运行简单程序和WIN CE;但NAND FLASH起不来。 有谁遇到过这问题吗?…

查看全部问答>

WM屏幕旋转的消息

请问Windows Mobile设备屏幕旋转的时候会产生什么消息? 如何去截获这个消息呢?…

查看全部问答>

WinCE下进程间等待的问题

现有应用程序App1和App2。App1在自身的InitInstance里通过CreateProcess调用App2后进入等待,需检测到App2的主窗口创建完毕后App1才继续运行。 通过EnumWindows可以检测到App2的HWND,然而不知道App2主窗口创建好的具体时机,通过Sleep一段时间后A ...…

查看全部问答>

实现虚拟并口和串口的数据转发,可有偿~

我的程序是通过并口和外设进行通信的,但是我的外设是使用串口和电脑连接的,硬件上不会有什么改动了,也不能使用并口转串口的硬件转换卡,要做一个软件中间层,把程序发往并口的数据转换至串口,并接受来自串口的数据再发给并口,是要虚拟出一个并 ...…

查看全部问答>

设置WinCE调试应用程序,在ActiveSync连接的时候,出现一个对话框

“未创建任何配置文件。要创建新配置文件,请使用‘控制面板’中的‘右键’图标。”我点了确定之后,又出现一个 “由于无法访问您的个人信息管理器(pim)程序而无法完成同步。请确认您的PIM程序正在运行并再次同步。如果您的PIM程序正在运行,请 ...…

查看全部问答>

交流有效值FPGA实用程序

clk: 系统时钟;rst:复位信号 clk1us: 对交流信号采样的时钟; pulse: 交流信号过零方波 data: 正弦输入数据 rms_div:在一个周期按采样间隔取样数据所求的和 rms_by:在一个周期按采样间隔累加数据和值   交流信号的RMS=(rms_div/rms_by ...…

查看全部问答>

小弟设计了一个模拟串口的发送接收程序,调试的时候第一个数据是错误的

利用的单片机资源:P1_0用来接收PC机下发的数据(一个起始位,八个数据位,一个结束位),P1_1用来发送数据,外部中断0,定时器1(用来接收数据),定时器中断0(用来发送数据)。波特率9600bps 实现的功能:单片机能正确返回PC机下发的数据。 现 ...…

查看全部问答>