历史上的今天
返回首页

历史上的今天

今天是:2024年10月11日(星期五)

正在发生

2021年10月11日 | STM8与汇编语言(5)

2021-10-11 来源:eefocus

上一次的实验程序,完成了LED指示灯的驱动,用到了GPIO的输出方式,这一次要用GPIO的输入方式,进行按键的输入。下面的代码是读入按键值,如果按键按下,则点亮LED,否则熄灭LED。


利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。


编译通过后,下载到开发板,运行程序,可以看到当按下按键时,LED1点亮,当抬起按键时,LED1熄灭。


stm8/


#include "mapping.inc"


; 涉及到的硬件资源

; LED1定义在PD3

; KEY1定义在PD7



; 下面定义端口D的寄存器地址

PD_ODR   EQU   $500f              

PD_IDR   EQU   $5010

PD_DDR   EQU   $5011

PD_CR1   EQU   $5012

PD_CR2   EQU   $5013



; 定义堆栈空间的起始位置和结束位置

stack_start.w  EQU   $stack_segment_start

stack_end.w   EQU    $stack_segment_end


segment 'rom'        ; 下面开始定义一个段,该段位于ROM中

main.l                       ; 定义复位后的第一条指令的标号(即入口地址)

;

; 首先要初始化堆栈指针

     LDW    X,#stack_end        

     LDW     SP,X



; 下面初始化IO端口

; PD3设置成推挽输出

; PD7设置成悬浮输入

       LD     A,#08

  LD     PD_DDR,A            ; 将PD3设置成输出,PD7设置成输入

       LD     A,#08

       LD     PD_CR1,A            ; 将PD3设置成推挽输出

       LD     A,#00

       LD     PD_CR2,A            ;

MAIN_LOOP.L

       LD     A,PD_IDR            ; 读入端口D的引脚输入寄存器

       AND    A,#$80              ; 测试最高位是否为1

       JRNE   MAIN_LOOP_1                               ; 若最高位为1,则跳转

       LD     A,#$08              ; 否则说明按键按下,PD3<-1,点亮LED1

       LD     PD_ODR,A            ;

       JRA    MAIN_LOOP

MAIN_LOOP_1.L                       

       LD     A,#$00              ; 若按键没按下,PD3<-0,熄灭LED1

       LD     PD_ODR,A            ;

       JRA    MAIN_LOOP           ;





  interrupt NonHandledInterrupt

NonHandledInterrupt.l

                              iret



; 下面定义中断向量表    

             segment 'vectit'

             dc.l {$82000000+main}                         ; reset

             dc.l {$82000000+NonHandledInterrupt}   ; trap

             dc.l {$82000000+NonHandledInterrupt}   ; irq0

             dc.l {$82000000+NonHandledInterrupt}   ; irq1

             dc.l {$82000000+NonHandledInterrupt}   ; irq2

             dc.l {$82000000+NonHandledInterrupt}   ; irq3

             dc.l {$82000000+NonHandledInterrupt}   ; irq4

             dc.l {$82000000+NonHandledInterrupt}   ; irq5

             dc.l {$82000000+NonHandledInterrupt}   ; irq6

             dc.l {$82000000+NonHandledInterrupt}   ; irq7

             dc.l {$82000000+NonHandledInterrupt}   ; irq8

             dc.l {$82000000+NonHandledInterrupt}   ; irq9

             dc.l {$82000000+NonHandledInterrupt}   ; irq10

             dc.l {$82000000+NonHandledInterrupt}   ; irq11

             dc.l {$82000000+NonHandledInterrupt}   ; irq12

             dc.l {$82000000+NonHandledInterrupt}   ; irq13

             dc.l {$82000000+NonHandledInterrupt}   ; irq14

             dc.l {$82000000+NonHandledInterrupt}   ; irq15

             dc.l {$82000000+NonHandledInterrupt}   ; irq16

             dc.l {$82000000+NonHandledInterrupt}   ; irq17

             dc.l {$82000000+NonHandledInterrupt}   ; irq18

             dc.l {$82000000+NonHandledInterrupt}   ; irq19

             dc.l {$82000000+NonHandledInterrupt}   ; irq20

             dc.l {$82000000+NonHandledInterrupt}   ; irq21

             dc.l {$82000000+NonHandledInterrupt}   ; irq22

             dc.l {$82000000+NonHandledInterrupt}   ; irq23

             dc.l {$82000000+NonHandledInterrupt}   ; irq24

             dc.l {$82000000+NonHandledInterrupt}   ; irq25

             dc.l {$82000000+NonHandledInterrupt}   ; irq26

             dc.l {$82000000+NonHandledInterrupt}   ; irq27

             dc.l {$82000000+NonHandledInterrupt}   ; irq28

             dc.l {$82000000+NonHandledInterrupt}   ; irq29


      end

推荐阅读

史海拾趣

EDI [Electronic devices inc.]公司的发展小趣事

在2000年代初,Eclipse Magnetics公司迎来了一个重要的合作伙伴——IBM。当时,IBM正在寻求一种可靠的磁性技术来支持其开源项目Eclipse。经过深入了解和严格测试,IBM最终选择了Eclipse Magnetics的产品。这一合作不仅为Eclipse Magnetics带来了可观的业务机会,还进一步提升了公司在行业中的影响力。

DUCATI公司的发展小趣事

在大中华区市场,FCI展现出了强劲的增长势头。公司积极布局中国市场,特别是在3G产业领域,FCI投入大量人力资源研发相关产品,为通信设备厂商提供优异的连接器解决方案。随着中国3G牌照的发放,FCI的业绩得到了强劲增长。几乎所有的12.5GHz局端通信设备制造商都采用了FCI的连接器解决方案,这使得FCI在大中华区的市场份额不断攀升。

迈翔科技(COILMX)公司的发展小趣事

迈翔科技(COILMX)的创始人看到了电子行业,特别是电感器市场的巨大潜力。1996年,公司正式成立,初期主要专注于SMD电感的设计、制造和销售。公司从香港起步,逐步在深圳设立工厂,引进先进的生产设备和技术,为未来的发展奠定了坚实的基础。

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

随着新能源汽车市场的蓬勃发展,西安航天民芯敏锐地捕捉到了这一机遇。公司投入大量资源进行新能源汽车BMS管理芯片的研发,并成功推出了国内首款新能源汽车专用BMS管理芯片。这一创新产品填补了国内空白,为公司在新能源汽车领域赢得了先机。

Heimann Optoelectronics Gmbh公司的发展小趣事

2018年,Hei Inc Optoelectronic Division抓住行业整合的机遇,成功并购了一家在光电子材料领域具有领先地位的企业。这次并购不仅使公司获得了先进的光电子材料生产技术,还极大地丰富了公司的产品线。通过整合双方资源和技术优势,公司在光电子器件的研发和生产上实现了质的飞跃。并购后的Hei Inc Optoelectronic Division不仅在市场上占据了更大的份额,还进一步提升了自身的技术实力和品牌影响力。

Aerovox Corporation公司的发展小趣事

为了进一步扩大市场份额,Hei Inc Optoelectronic Division积极实施国际化战略。公司首先在欧洲和北美市场设立了分支机构,并建立了完善的销售和服务网络。通过参加国际展会、与当地企业建立合作关系等方式,公司成功地将产品推向了国际市场。同时,公司还加大了对海外研发中心的投入,吸引了众多国际顶尖的光电子专家加盟。这些举措不仅提升了公司的国际竞争力,还为公司带来了更多的国际订单和合作伙伴。

问答坊 | AI 解惑

基于FPGA的键盘控制器的设计

引 言  由于CPLD的可再编程性质,可以将同一装置用于不同的键盘和产品,而收到高产量、低成本的效果,同时也节约了单片机的资源以做它用。可再编程的特点辅之简便易用的设计工具,使设计可以进行晚期更改,提高了产品设计的灵活性,降低了风险。 ...…

查看全部问答>

调制解调

调制解调 的原理介绍课件…

查看全部问答>

求贤若渴,招聘单片机人才

本公司位于广州市天河区软件园内,主要从事游戏机的软件,硬件的产品开发。 现在公司扩大开发范围,现急聘一名单片机开发人员(有效期15天)。 要求: 熟悉ARM9,ARM7内核及开发过程。 熟悉MCS51结构芯片,PIC,AVR等芯片 了解CPLD,FPGA 熟悉KE ...…

查看全部问答>

[cetk] cetk测试用的dll有更新么

    大家都知道,cetk测试的时候是由tux调用测试dll来进行测试的,也就说具体的测试项都是在这些dll中一张表格中进行定义的。     本来我以为这些测试的dll是随着PB补丁进行更新,但是今天仔细看了看,不是这么回事。前两天, ...…

查看全部问答>

Hive base register使用硬盘在CE6问题

Hive base register在CE5下使用硬盘已经成功了。 但是在CE6下,创建的文件目录始终在My Device下,而不是在硬盘中。(怀疑是Hive处理在hard disk driver加载之前) 加入hive base register组件,使用微软自带的硬盘驱动。 ; HIVE BOOT SECTION ...…

查看全部问答>

MPEG2编码问题!!!!严重问题

MPEG-2标准里 怎么样做到音频视频的同步,看了13818-1标准 还是不懂 能不能详细讲解下!!!如果有中文版本的给点资料更好 谢谢…

查看全部问答>

渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临!

渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 详情请参见 www.neworigin.net 同时欢迎大家与我们的609期学员交流!这期学员已与2月11日毕业 ...…

查看全部问答>

请问st32m的512k版本现在有没有

                                 请问st32m的512k版本现在有没有…

查看全部问答>

ISO26262

大家谁有ISO26262  的中文版  资料 !!!!给个呗…

查看全部问答>