状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以实现条件操作。如指令集所述,所有ALU 运算都将影响状态寄存器的内容。这样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。
在进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢复。这些工作需要软件来处理。
AVR 中断寄存器 SREG 定义如下:
·Bit 7 – I: 全局中断使能
I 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果I 清零,则不
论单独中断标志置位与否,都不会产生中断。任意一个中断发生后I 清零,而执行RETI
指令后I 恢复置位以使能中断。I 也可以通过SEI 和CLI 指令来置位和清零。
·Bit 6 – T: 位拷贝存储
位拷贝指令BLD 和BST 利用T 作为目的或源地址。BST 把寄存器的某一位拷贝到T,而
BLD 把T 拷贝到寄存器的某一位。
·Bit 5 – H: 半进位标志
半进位标志H 表示算术操作发生了半进位。此标志对于BCD 运算非常有用。详见指令集
的说明。
·Bit 4 – S: 符号位, S = N ⊕ V
S 为负数标志N 与2 的补码溢出标志V 的异或。详见指令集的说明。
·Bit 3 – V: 2 的补码溢出标志
支持2 的补码运算。详见指令集的说明。
·Bit 2 – N: 负数标志
表明算术或逻辑操作结果为负。详见指令集的说明。
·Bit 1 – Z: 零标志
表明算术或逻辑操作结果为零。详见指令集的说明。
·Bit 0 – C: 进位标志
表明算术或逻辑操作发生了进位。详见指令集的说明。
关键字:ATmega16 状态寄存器 算术指令
引用地址:
ATmega16 状态寄存器
推荐阅读最新更新时间:2024-11-12 14:48
基于单片机ATMega16控制的CAN总线与RS-232转换器电路
CAN(Controller Area Network)总线是德国BOSCH公司为解决现代汽车中众多控制与测试之间的数据交换开发的一种串行数据通信协议,是一种多主方式的串行通信总线。CAN总线是一种开放式、数字化、多点通信的控制系统局域网,具有通信速率高、传输时间短、传输距离远、纠错能力强、控制简单、扩展能力强以及性价比高等特点,是目前国际上应用最广泛的现场总线之一。但是目前PC机普遍配置RS232串行通信接口,没有CAN总线接口。实际中很多设备带有RS-232接口没有CAN总线接口,为了方便具有RS-232接口的设备与CAN总线的数据通信,本文完成了基于单片机ATMega16控制的CAN总线与RS-232转换器电路设计和软件
[单片机]
ARM中的程序状态寄存器(CPSR)
31 30 29 28 27 ~ 8 7 6 5 4 3 2 1 0 N Z C V 保留 I F T M4 M3 M2 M1 M0 N Negative/Less Than I IRQ disable Z Zero F FIQ disable C Carry/Borrow/Extend T State bit V Overflow M0~4 Mode bits 1、条件码标志 N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的
[单片机]
ATmega16读写iic(24c02) C语言程序测试通过
简介:本程序在实验板ATMEGA16上测试通过,在示波器把SCL,SDA信号线有数据,移值到自己电路上可以放心使用,在ATMEGA32上一样使用,本人24C02的A2,A1,A0都是接地,若地址不一样,在程序相应位置改一下就可以,串口上调试单片机的基础,所以它一定要会用。 #include iom16v.h #include I2C.h #include 1602.h #include delay.h /*通过AVR往IIC写数据,并通过串口把数据读出显示出来*/ //=============================================================== void uart_i
[单片机]
MC34063A构成的供电电源电路
利用芯片MC34063A外接简单元件构成降压电路,输出5 V电压为单片机ATMEGA16提供电源,电路如图所示。 图 单片机供电电源电路 其中R1为限流电阻、C1为定时电容、C2为输出滤波电容、R2和R3为设定输出电压大小的电阻,计算公式如式(1)所示。Rst为限流电阻,当限流电阻的电压达到330 mV时,电流限制电路开始工作。计算公式如式(2)所示,其中IMax_out为最大输出电流。
[单片机]
ATmega16与触摸屏的连接
触摸屏是四线电阻式的,驱动芯片采用了很常见的ADS7846。ADS7846的典型应用电路图如下图所示。 在笔者的应用中,pin7和pin8都直接连接到GND,即不使用辅助输入通道,pin9和pin10连接在一起,即使用了VCC做为ADS7846的模数转换参考电压源。pin11所接的上拉电阻可以不要,但要设置相应的AVR输入端口上拉电阻使能。pin13做为转换结束指示,可以通过判断此脚电平来决定是否可以读出转换数据,也可以简单的使用延时的方法来留够转换时间。pin16、pin15、pin14、pin12做为一个标准的SPI从机接口与mega16芯片相连接。 ADS7846支持8位精度和12位精度,即触摸分辨
[单片机]
ATmega88 控制和状态寄存器MCUCSR
AVR 控制和状态寄存器提供了有关引起AVR复位的复位源的信息。 · Bit 7..4 – Res: 保留位 ATmega48/88/168中的这些位都没有适用,读返回值始终为 0”。 · Bit 3 – WDRF: 看门狗复位标志 看门狗复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 · Bit 2 – BORF: 掉电检测复位标志 掉电检测复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 · Bit 1 – EXTRF: 外部复位标志 外部复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 · Bit 0 – PORF: 上电复位标志 上电复位发生时置位。只能通过写”0” 来
[单片机]
ATmega16 中断向量
本节描述ATmega16的中断处理。更一般的AVR中断处理请参见P11“复位与中断处理” 。 (点击图片放大) Table 19给出了不同的BOOTRST/IVSEL设置下的复位和中断向量的位置。如果程序永远不使能中断,中断向量就没有意义。用户可以在此直接写程序。同样,如果复位向量位于应用区,而其他中断向量位于Boot 区,则复位向量之后可以直接写程序。反过来亦是如此。 ATmega16 典型的复位和中断设置如下: 地址 符号代码说明 $000 jmp RESET ; 复位中断向量 $002 jmp EXT_INT0 ; IRQ0 中断向量 $004 jmp EXT_INT1 ; IRQ1 中断向量 $006 jmp TI
[单片机]
1.ARM寄存器简解
1.ARM寄存器简解 由ARM Architecture Reference Manual.pdf得信息: 31个通用寄存器,6个状态寄存器(一个cpsr,5个spsr)。 通用31个寄存器,被分为了三类:R0~R7,R8~R14,PC程序计数器(R15)。 R13常做堆栈指针的。 R14保存调用子函数的返回地址,和中断的返回地址。 用于程序计数器,pc指针。 cpsr: 这是对ARM寄存器的简单描述。
[单片机]