历史上的今天
返回首页

历史上的今天

今天是:2024年11月27日(星期三)

正在发生

2019年11月27日 | ATmega32单片机汇编程序

2019-11-27 来源:51hei

本人初学每一款CPU,首先都是要研究一下相应的汇编指令,感觉这样能够很快的体验到该CPU的硬件原理,对后续的学习很有帮助.许多人认为不然,感觉汇编繁琐,难用。其实这样不会对单片机内部有深入的了解,会一些基本的汇编在单步调试中很有用,还有调度的编写,操作系统的移植等。


下面是个led闪烁的汇编程序,注释用C写的,一目了然
*****************************************************************
//CPU:mega32
//编译器:iar

        #include
        NAME    main
        
        PUBLIC  main
        
        ORG RESET_vect    ;复位中断向量
        RJMP    main
        
        ORG INT0_vect   ;外部中断0中断向量
        rjmp eint0
        
main   

        ldi r16,0x99
        out DDRD,r16
        lds r1,DDRD
        cli
        ldi r16,high(RAMEND)     ;取内部RAM最高地址的高位字节
        out SPH,r16               ;放入SP的高位
        ldi r16,low(RAMEND)     ;取内部RAM最低地址的低位字节
        out SPL,r16             ;放入SP的低位
      

        ;DDRD |= (1 << 7);//PD7置为输出
        in r16,DDRD
        sbr r16,1<<7
        out DDRD,r16
        
        
        ;eint0_init();
        call eint0_init
        
        ;sei();
        sei
        
        ;while(1);
        s: rjmp s
        
        
        ;#pragma vector = INT0_vect
        ;__interrupt void eint0(void)   //INT0中断服务程序
        eint0:
        ;PORTD ^= 1<<7;//PD7取反
        in r16,PORTD
        sbrs r16,7
        ldi r17,1<<7
        eor r16,r17
        out PORTD,r16
        
        reti
        
        
        ;void eint0_init(void)
        eint0_init:
        ;DDRD &= ~(1 << 2);//INT0脚输入
        in r16,DDRD
        cbr r16,1<<2
        out DDRD,r16
        ;PORTD |= (1 << 2);//INT0脚内部上拉电阻有效
        in r16,PORTD
        sbr r16,1<<2
        out PORTD,r16
        ;SFIOR &= ~(1<        in r16,SFIOR
        cbr r16,1<        out SFIOR,r16
        ;MCUCR |= (1 << ISC01) | (1 << ISC00);//INT0下降沿触发
        in r16,MCUCR
        sbr r16,(1 << ISC01) | (1 << ISC00)
        out MCUCR,r16
        ;GICR |= (1 << INT0);//使能INT0
        in r16,GICR
        sbr r16,1 << INT0
        out GICR,r16
        
        ret


        END     main
*********************************************************************


推荐阅读

史海拾趣

BOSER公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如智能化、物联网等新技术的发展。BOSER公司积极应对这些变革,不断调整和优化产品结构,加大在智能化、物联网等领域的研发投入。同时,公司还加强与高校、科研机构的合作,共同推动电子行业的创新与发展。

Fronter Electronics Co Ltd公司的发展小趣事

Fronter电子成立于1991年,由一群对电子技术充满热情的创业者共同创立。在公司成立初期,Fronter电子专注于电子元件的代理与销售,通过引进国际知名品牌的产品,如SUNLORD、KDS等,迅速在行业内建立了初步的声誉。公司凭借敏锐的市场洞察力和高效的供应链管理,逐步在电子元器件市场中站稳脚跟。

Comchip Technology公司的发展小趣事

为了进一步扩大市场份额,Comchip Technology积极开拓国内外市场,与多家知名企业建立了长期稳定的合作关系。同时,公司还加强了与国际同行的交流与合作,引进了先进的技术和管理经验,不断提升自身的竞争力。

AVG [AVG Semiconductors(HITEK)]公司的发展小趣事

随着技术的不断进步和产品的日益成熟,AVG开始积极寻求市场扩张的机会。公司先后进入多个国家和地区,通过设立分支机构和与当地企业建立合作关系,逐步扩大了市场份额。同时,AVG还注重品牌建设和提升,通过参加国际电子展会、举办技术研讨会等活动,提高了品牌知名度和影响力。这些举措使得AVG在全球电子行业中的地位逐渐提升。

Catalyst / ON Semiconductor公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,Catalyst / ON Semiconductor公司开始实施全球扩张战略。公司先后在多个国家和地区设立了分支机构和研发中心,以便更好地服务当地客户并吸引优秀人才。同时,公司还积极与其他知名企业进行战略合作,共同推动半导体技术的创新和应用。

Custom Connector Corporation公司的发展小趣事

随着电子行业的不断发展,CCC始终将技术创新作为公司发展的核心驱动力。公司投入大量研发资金,引进先进技术和设备,不断提升产品的性能和品质。同时,CCC还积极与高校、科研机构合作,共同研发具有自主知识产权的新产品。这些创新成果不仅为CCC赢得了市场的认可,也推动了整个电子连接器行业的技术进步。

问答坊 | AI 解惑

ARM7 开发全部源代码 经典

ARM7 开发全部源代码 经典…

查看全部问答>

请问一个关于程序加载的问题

我用的是STM320VC5402.   由于没有仿真器,所以想直接将程序加载到芯片上运行。在网上搜了很多相关的资料得知有好几种加载方式。比如串行加载、并行加载、HPI加载等等,想请教一下一大虾们这几种加载具体是怎样的?(硬件上是怎样接?软 ...…

查看全部问答>

华为软件工程师手册

华为软件工程师手册…

查看全部问答>

wm_lbuttondblclk消息无法获取到,用SPY++也没有显示此消息,请指教。

准备处理WM_LBUTTONDBLCLK消息,发现并没有此消息,WM_LBUTTONDOWN则有。 用SPY++看也没有WM_LBUTTONDBLCLK消息,为什么呀。…

查看全部问答>

ARM编程结构体包含double类型如何设置单字节对齐

ARM默认不是单字节对齐,必须要在结构体前加__packed修饰符才能将结构体设置为单字节对齐。但是结构体中包含了double就不能用__packed修饰符了,编译报错。请问各位高手如何解决?这个结构体是用来读库文件中的记录的,因为库文件中记录是单字节对 ...…

查看全部问答>

请问版主,STM32F2系列是否已正式供货了?

                                 今天刚看到F2系列,不知现在是否正常供货,请告知。…

查看全部问答>

430的SPI和UART使用同一个寄存器发送数据?能同时应用么/

要同时应用SPI和UART,看了一下,好象是同一个寄存器发送数据啊,怎么SPI发送数据还要设置UART的拨特率啊?请高手\\解释~!谢谢!…

查看全部问答>

点阵不流动?请教!

下面是个点阵教程能流动,我在protues仿真不能流动,并且显示的字也不对?请教了 #include <reg51.h> char XD[ ]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x60}; char code YD[] ={ 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xb7,0 ...…

查看全部问答>

TI 的 SensorTag 确实很好玩!

TI 的 SensorTag http://www.ti.com.cn/ww/wireless_connectivity/sensortag/index.shtml?INTC=SensorTag-cn&HQS=sensortag-bhp-cn…

查看全部问答>