当前位置:文档之家› avr寄存器详细资料{补充}

avr寄存器详细资料{补充}

avr寄存器详细资料{补充}
avr寄存器详细资料{补充}

Atmega16单片机有32个通用I/O口,有PA~PD四组,每组都是8位。其主要的寄存器有DDRXn(X=A,B,C,D;n=0,2,…,7,下同),PORTXn和PINXn。I/O组合设置见表1。

表1 I/O组合设置

DDRXn PORTXn I/O 上拉电阻说明

0 0 输入否I/O三态输入

0 1 输入是I/O口带上拉电阻输入

1 0 输出否推免0输出

1 1 输出否推免1输出

1. PA 口寄存器

(1)DDRA

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1 DDRA0 (2)PORTA

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0 (3)PINA

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0

2. PB 口寄存器

(1)DDRB

(2)PORTB

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 (3)PINB

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0

3. PC 口寄存器

(1)DDRC

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 DDRC7 DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0 (2)PORTC

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PORTC7 PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0 (3)PINC

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PINC7 PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0

4. PD 口寄存器

(1)DDRD

(2)PORTD

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0 (3)PIND

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0

DDRX是方向寄存器,可读可写。在写操作时用于制定PX口是作为输入口还是输出口;在读操作时,从DDRX寄存器读出来的是端口的方向设定值。DDRX寄存器的初始值为0x00。

PORTX是数据寄存器,可读写。在写操作时,从PORTX写入的数据存入内部锁存器,以确定端口的工作状态或者将写入的数据送到外部数据总线。PORTX寄存器的初始值为0x00。

PINX用来访问端口X的逻辑值,且只允许读操作。从PINX读入的数据只是X口引脚的逻辑状态。其初始值为高阻态。

三. 中断寄存器

中断是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。

Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。中断向量表见表2,处于越低地址的

中断具有更高优先级。

表2 中断向量表

向量号程序地址中断源描述

1 0x00 RESET 外部引脚电平引发的复位,上电复位,掉电检测复位,看门狗复位,以及JTAG AVR 复位

2 0x02 INT0 外部中断请求0

3 0x0

4 INT1 外部中断请求1

4 0x06 TIMER2 COMP 定时器/计数器2比较匹配

5 0x08 TIMER2 OVF 定时器/计数器2溢出

6 0x0a TIMER1 CAPT 定时器/计数器1事件捕捉

7 0x0c TIMER1 COMPA 定时器/计数器1比较匹配 A

8 0x0e TIMER1 COMPB 定时器/计数器1比较匹配B

9 0x10 TIMER1 OVF 定时器/计数器1溢出

10 0x12 TIMER0 OVF 定时器/计数器0溢出

11 0x14 SPI,STC SPI 串行传输结束

12 0x16 USART, RXC USART,Rx 结束

13 0x18 USART, UDRE USART数据寄存器空

14 0x1a USART, TXC USART,Tx 结束

15 0x1c ADC ADC 转换结束

16 0x1e EE_RDY EEPROM 就绪

17 0x20 ANA_COMP 模拟比较器

18 0x22 TWI 两线串行接口

19 0x24 INT2 外部中断请求2

20 0x26 TIMER0 COMP 定时器/ 计数器0 比较匹配

21 0x28 SPM_RDY 保存程序存储器内容就绪

1.状态寄存器 SREG

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

I T H S V N Z C

I:全局中断使能位。在I置位后,单独的中断使能由不同的中断寄存器控制。若I为0,则禁止中断。

2.MCU 控制寄存器 MCUCR

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00 SE:MCU休眠使能位

SM1~SM0:MCU休眠模式选择

SM2 SM1 SM0 休眠模式

0 0 0 空闲

0 0 1 ADC 噪声抑制模式

0 1 0 掉电模式

0 1 1 省电模式

1 0 0 保留

1 0 1 保留

1 1 0 Standby(1) 模式

1 1 1 扩展Standby(1) 模式

ISC11~ISC10:外部中断1的中断触发检测方式

ISC11 ISC10 INT1中断

0 0 低电平中断

0 1 INT1 引脚上任意的逻辑电平变化都将引发中断

1 0 下降沿中断

1 1 上升沿中断

ISC01~ISC00:外部中断0的中断检测方式

ISC01 ISC00 INT0中断

0 0 低电平中断

0 1 INT1 引脚上任意的逻辑电平变化都将引发中断

1 0 下降沿中断

1 1 上升沿中断

通用中断控制寄存器 GICR

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 INT1 INT0 INT2 - - - IVSEL IVCE

INT1:使能外部中断请求1

INT0:使能外部中断请求0

INT2:使能外部中断请求2

4.通用中断标志寄存器 GIFR

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

INTF1 INTF0 INTF2 - - - IVSEL IVCE

INTF1{INTF缩写:interrupt flag}:外部中断标志 INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。如果SREG 的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。

INTF0:{INTF缩写:interrupt flag}外部中断标志 INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。如果SREG 的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。

INTF2:{INTF缩写:interrupt flag}外部中断标志 INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。如果SREG 的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。

8

5.T/C 中断屏蔽寄存器 TIMSK

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0

TOIE0{timer overflow interrupt enable}: T/C0 溢出中断使能

当TOIE0 和状态寄存器的全局中断使能位I 都为”1”时,T/C0 的溢出中断使能。当T/C0发生溢出,即TIFR 中的TOV0 位置位时,中断服务程序得以执行。

OCIE0{output compare interrupt enable}: T/C0 输出比较匹配中断使能

当OCIE0 和状态寄存器的全局中断使能位I 都为”1”时,T/C0 的输出比较匹配中断使能。当T/C0 的比较匹配发生,即TIFR 中的OCF0 置位时,中断服务程序得以执行。

TOIE1:{timer overflow interrupt enable} T/C1 溢出中断使能

当TOIE1 和状态寄存器的全局中断使能位I 都为”1”时,T/C1 的溢出中断使能。当T/C1发生溢出,即TIFR 中的TOV1 位置位时,中断服务程序得以执行

OCIE1B:{output compare interrupt enable} T/C1 输出比较 B 匹配中断使能

当该位被设为"1”,且状态寄存器中的I 位被设为"1”时,使能T/C1 的输出比较 B 匹配中断使能。一旦TIFR 上的OCF1B 置位,CPU 即开始执行T/C1 输出比较B 匹配中断服务程序。

OCIE1A:{output compare interrupt enable} 输出比较 A 匹配中断使能

当该位被设为"1”,且状态寄存器中的I 位被设为"1”时, T/C1 的输出比较A 匹配中断使能。一旦TIFR 上的OCF1A 置位,CPU 即开始执行T/C1 输出比较A 匹配中断服务程序。

TICIE1:{timer input catch interrupt enable} T/C1 输入捕捉中断使能

当该位被设为"1”,且状态寄存器中的I 位被设为"1”时, T/C1 的输入捕捉中断使能。一旦TIFR 的ICF1 置位,CPU 即开始执行T/C1 输入捕捉中断服务程序。

TOIE2:{timer overflow interrupt enable} T/C2 溢出中断使能

当TOIE2 和状态寄存器的全局中断使能位I 都为”1”时,T/C2 的溢出中断使能。当T/C2发生溢出,即TIFR 中的TOV2 位置位时,中断服务程序得以执行。

OCIE2:{output compare interrupt enable} T/C2 输出比较匹配中断使能

当OCIE2 和状态寄存器的全局中断使能位I 都为”1”时,T/C2 的输出比较匹配中断使能。当T/C2 的比较匹配发生,即TIFR 中的OCF2 置位时,中断服务程序得以执行。

6.T/C 中断标志寄存器 TIFR

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0

OCF0: {ocf缩写:output compare flag}输出比较标志0

当T/C0 与OCR0( 输出比较寄存器0) 的值匹配时,OCF0 置位。此位在中断服务程序里硬件清零,也可以对其写1 来清零。当SREG 中的位I、OCIE0(T/C0 比较匹配中断使能) 和OCF0 都置位时,中断服务程序得到执行。

TOV0: {tov缩写:timer overflow}T/C0 溢出标志

当T/C0 溢出时, TOV0 置位。执行相应的中断服务程序时此位硬件清零。此外, TOV0 也可以通过写1 来清零。当SREG 中的位I、TOIE0(T/C0 溢出中断使能) 和TOV0 都置位时,中断服务程序得到执行。在相位修正PWM 模式中,当T/C0 在0x00 改变记数方向时, TOV0 置位。

TOV1:{tov缩写:timer overflow} T/C1 溢出标志

该位的设置与T/C1 的工作方式有关。工作于普通模式和CTC 模式时,T/C1 溢出时 TOV1置位。对工作在其它模式下的TOV1 标志位置位

OCF1B: {ocf缩写:output compare flag} T/C1 输出比较 B 匹配标志位

当TCNT1 与OCR1B 匹配成功时,该位被设为"1”。强制输出比较(FOC1B) 不会置位 OCF1B。执行强制输出比较匹配B 中断服务程序时OCF1B 自动清零。也可以对其写入逻辑"1”来清除该标志位。

OCF1A:{ocf缩写:output compare flag} T/C1 输出比较 A 匹配标志位

当TCNT1 与OCR1A 匹配成功时,该位被设为"1”。强制输出比较(FOC1A) 不会置位 OCF1A。执行强制输出比较匹配A 中断服务程序时OCF1A 自动清零。也可以对其写入逻辑"1”来清除该标志位。

ICF1:{icf缩写:input catch flag}T/C1 输入捕捉标志位

外部引脚ICP1 出现捕捉事件时ICF1 置位。此外,当ICR1 作为计数器的TOP 值时,一旦计数器值达到TOP,ICF1 也置位。执行输入捕捉中断服务程序时ICF1 自动清零。也可以对其写入逻辑"1”来清除该标志位。

OCF2: {ocf缩写:output compare flag}输出比较标志2

当T/C0 与OCR0( 输出比较寄存器0) 的值匹配时,OCF0 置位。此位在中断服务程序里硬件清零,也可以对其写1 来清零。当SREG 中的位I、OCIE0(T/C0 比较匹配中断使能) 和OCF0 都置位时,中断服务程序得到执行。

TOV2:{tov缩写:timer overflow} T/C2 溢出标志

当T/C2 溢出时, TOV2 置位。执行相应的中断服务程序时此位硬件清零。此外, TOV2

也可以通过写1 来清零。当SREG 中的位I、TOIE2(T/C2 溢出中断使能) 和TOV2 都置位时,中断服务程序得到执行。在相位修正PWM 模式中,当T/C2 在0x00 改变记数方

向时, TOV2 置位。

四.定时器寄存器

Atmega16有2个8位定时器和一个16位定时器。

1. 定时器 0

(1)T/C 控制寄存器TCCR0

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00

FOC0:{fco缩写:force output compare}

强制输出比较位

FOC0仅在WGM00指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,在使用PWM 时,写TCCR0 要对其清零。对其写1 后,波形发生器将立即进行比较操作。比较匹配输出引脚 OC0 将按照COM01:0 的设置输出相应的电平。要注意FOC0 类似一个锁存信号,真正对强制输出比较起作用的是COM01:0 的设置。 FOC0不会引发任何中断,也不会在利用OCR0作为TOP的CTC模式下对定时器进行清零的操作。

读FOC0 的返回值永远为0。 WGM01:{wgm缩写:wave generate mode} 波形产生方式

这几位控制计数器的计数序列,计数器的最大值TOP,以及产生何种波形。T/C 支持的模式有:普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM 模

式。

波形产生模式的位定义

模式

WGM01 WGM00 T/C 的工作模式TOP OCR0的更新时间TOV0 的置位时刻

0 0 0 普通0xFF 立即更新MAX

1 0 1 相位修正PWM 0xFF TOP BOTTOM

2 1 0 CTC OCR0 立即更新MAX

3 1 1 快速PWM 0xFF TOP MAX

COM01{com缩写:compare output mode}:0: 比较匹配输出模式

这些位决定了比较匹配发生时输出引脚OC0 的电平。如果COM01:0 中的一位或全部都置位, OC0 以比较匹配输出的方式进行工作。同时其方向控制位要设置为1

当OC0 连接到物理引脚上时, COM01:0 的功能依赖于WGM01:0 的设置。下表给出了当WGM01:0 设置为普通模式或CTC 模式时COM01:0 的功能。

比较输出模式,非PWM 模式

COM01 COM00 说明

0 0 正常的端口操作,不与OC0 相连接

0 1 比较匹配发生时OC0 取反

1 0 比较匹配发生时OC0 清零

1 1 比较匹配发生时OC0 置位

比较输出模式,快速PWM 模式

COM01 COM00 说明

0 0 正常的端口操作,不与OC0 相连接

0 1 保留

1 0 比较匹配发生时OC0A 清零,计数到TOP 时OC0 置位

1 1 比较匹配发生时OC0A 置位,计数到TOP 时OC0 清零

注意:一个特殊情况是OCR0 等于TOP,且COM01 置位。此时比较匹配将被忽略,而计数到TOP

时OC0 的动作继续有效。

比较输出模式,相位修正PWM 模式

COM01 COM00 说明

0 0 正常的端口操作,不与OC0 相连接

0 1 保留

1 0 在升序计数时发生比较匹配将清零OC0 ,降序计数时发生比较匹配将置位 OC0

1 1 在升序计数时发生比较匹配将置位OC0 ,降序计数时发生比较匹配将清零 OC0

注意: 一个特殊情况是OCR0 等于TOP,且COM01 置位。此时比较匹配将被忽略,而计数到TOP 时OC0 的动作继续有效。

CS02:0: 时钟选择 {cs缩写:clock check}

用于选择T/C 的时钟源。

CS02CS01CS00说明

000无时钟,T/C 不工作

12

0 0 1 clkI/O/1 ( 没有预分频)

0 1 0 clkI/O/8 ( 来自预分频器)

0 1 1 clkI/O/64 ( 来自预分频器)

1 0 0 clkI/O/256 ( 来自预分频器)

1 0 1 clkI/O/1024 ( 来自预分频器)

1 1 0 时钟由T0 引脚输入,下降沿触发

1 1 1 时钟由T0 引脚输入,上升沿触发

如果T/C0 使用外部时钟,即使T0 被配置为输出,其上的电平变化仍然会驱动记数器。利用这一特性可通过软件控制记数。

(2)T/C 寄存器TCNT0{tcnt缩写: timer counter}

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

TCNT0[7:0]

通过T/C 寄存器可以直接对计数器的8 位数据进行读写访问。对TCNT0 寄存器的写访问将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0 的数值有可能丢失一次TCNT0 和OCR0 的比较匹配。

(3)输出比较寄存器OCR0{ocr缩写:output compare register}

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

OCR0[7:0]

输出比较寄存器包含一个8 位的数据,不间断地与计数器数值TCNT0 进行比较。匹配事件可以用来产生输出比较中断,或者用来在OC0 引脚上产生波形。

2. 定时器 1

(1)T/C1 控制寄存器A(TCCR1A){tccr缩写:timer counter control register}

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10 COM1A1:0: 通道A 的比较输出模式 COM1B1:0: 通道B 的比较输出模式

COM1A1:0与COM1B1:0分别控制OC1A与OC1B状态。如果COM1A1:0(COM1B1:0)的一位或两位被写入"1”,OC1A(OC1B) 输出功能将取代I/O 端口功能。此时OC1A(OC1B)相应的输出引脚数据方向控制必须置位以使能输出驱动器。

OC1A(OC1B) 与物理引脚相连时,COM1x1:0 的功能由WGM13:0 的设置决定

比较输出模式,非PWM

COM1A1/COM1B1 COM1A0/COM1B0 说明

0 0 普通端口操作,非OC1A/OC1B 功能 0 1 比较匹配时OC1A/OC1B 电平取反 1 0 比较匹配时清零OC1A/OC1B( 输出低电平) 1 1

比较匹配时置位 OC1A/OC1B ( 输出高电平)

比较输出模式,快速 PWM

COM1A1/COM1B1 COM1A0/COM1B0 说明 0 0 普通端口操作,非OC1A/OC1B 功能

0 1 WGM13:0 = 15: 比较匹配时OC1A 取反 , OC1B 不占 用物理引脚。WGM13:0 为其它值时为普通端口操作, 非OC1A/OC1B 功能

1 0 比较匹配时清零OC1A/OC1B , OC1A/OC1B 在TOP 时置位

1

1

比较匹配时置位 OC1A/OC1B , OC1A/OC1B 在TOP 时清 零

注意: 当OCR1A/OCR1B 等于TOP 且COM1A1/COM1B1置位时,比较匹配被忽略,

OC1A/OC1B 的置 位/ 清零操作有效

比较输出模式,相位修正及相频修正 PWM 模式{pmw 缩写:Pulse Width Modulation }

COM1A1/COM1B1 COM1A0/COM1B0 说明 0 0 普通端口操作,非OC1A/OC1B 功能

0 1 WGM13:0 = 9 或14: 比较匹配时OC1A 取反, OC1B 不占用物理引脚。 WGM13:0为其它值时 为普通端口操作,非OC1A/OC1B 功能

1

升序记数时比较匹配将清零OC1A/OC1B ,降 序记数时比较匹配将置位OC1A/OC1B

1 1 升序记数时比较匹配将置位OC1A/OC1B,降序记数时比较匹配将清零OC1A/OC1B

注意: OCR1A/OCR1B 等于TOP 且COM1A1/COM1B1 置位是一个特殊情况。 FOC1A: 通道A 强制输出比较

FOC1B: 通道B 强制输出比较

FOC1A/FOC1B只有当WGM13:0指定为非PWM模式时被激活。为与未来器件兼容,工作在PWM 模式下对TCCR1A 写入时,这两位必须清零。当FOC1A/FOC1B 位置1 ,立即强制波形产生单元进行比较匹配。COM1x1:0 的设置改变 OC1A/OC1B 的输出。注意 FOC1A/FOC1B 位作为选通信号。COM1x1:0 位的值决定强制比较的效果。

在CTC 模式下使用OCR1A 作为TOP 值, FOC1A/FOC1B 选通即不会产生中断也不好清除定时器。

FOC1A/FOC1B 位总是读为0

WGM11:0: 波形发生模式

这两位与位于TCCR1B 寄存器的WGM13:2 相结合,用于控制计数器的计数序列——计数器计数的上限值和确定波形发生器的工作模式。T/C 支持的工作模式有:普通模式( 计数器),比较匹配时清零定时器(CTC) 模式,及三种脉宽调制(PWM) 模

式。

波形产生模式的位描述

模式WGM13 WGM12 WGM11 WGM10 定时器/ 计数器

工作模式

计数上限

值 TOP

OCR1x 更

新时刻

TOV1 置位

时 TOV1

置位时刻

0 0 0 0 0 普通模式0xFFFF 立即更新

MAX

1 0 0 0 1 8 位相位修正

PWM

0x00FF TOP BOTTOM

2 0 0 1 0 9 位相位修正

PWM

0x01FF TOP BOTTOM

3 0 0 1 1 10 位相位修正

PWM

0x03FF TOP BOTTOM

4 0 1 0 0 CTC OCR1A 立即更新MAX

4

5 0 1 0 1 8位快速PWM 0x00FF TOP TOP

6 0 1 1 0 9位快速PWM 0x01FF TOP TOP

7 0 1 1 1 10位快速PWM 0x03FF TOP TOP

8 1 0 0 0 相位与频率修ICR1 BOTTOM BOTTOM

正PWM

9 1 0 0 1 相位与频率修

正PWM

OCR1A BOTTOM BOTTOM

10 1 0 1 0 相位修正PWM ICR1 TOP BOTTOM

11 1 0 1 1 相位修正PWM OCR1A TOP BOTTOM

12 1 1 0 0 CTC ICR1 立即更新MAX

13 1 1 0 1 保留–––

14 1 1 1 0 快速PWM ICR1 TOP TOP

15 1 1 1 1 快速 PWM OCR1A TOP TOP

(2)T/C1 控制寄存器B(TCCR1B)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

ICNC1 ICES1 –WGM13 WGM12 CS12 CS11 CS10

ICNC1: {icnc缩写:input catch noise control}入捕捉噪声抑制器

置位ICNC1 将使能输入捕捉噪声抑制功能。此时外部引脚ICP1 的输入被滤波。其作用是从ICP1 引脚连续进行4 次采样。如果4 个采样值都相等,那么信号送入边沿检测器。因此使能该功能使得输入捕捉被延迟了4 个时钟周期。

ICES1: {input catch (strike)edge select }输入捕捉触发沿选择

该位选择使用ICP1 上的哪个边沿触发捕获事件。ICES 为"0”选择的是下降沿触发输入捕捉; ICES1 为"1”选择的是逻辑电平的上升沿触发输入捕捉。

按照ICES1 的设置捕获到一个事件后,计数器的数值被复制到ICR1 寄存器。捕获事件还会置为ICF1。如果此时中断使能,输入捕捉事件即被触发。

当ICR1 用作TOP 值( 见TCCR1A 与TCCR1B 寄存器中WGM13:0 位的描述) 时,ICP1 与输入捕捉功能脱开,从而输入捕捉功能被禁用。

Bit 5 –保留位

该位保留。为保证与将来器件的兼容性,写TCCR1B 时,该位必须写入"0”。 WGM13:2: 波形发生模式

见TCCR1A 寄存器中的描述。 CS12:0: 时钟选择

这3 位用于选择T/C 的时钟源,

时钟选择位描述

CS02 CS01 CS00 说明

0 0 0 无时钟源

0 0 1 clkI/O/1

0 1 0 clkI/O/8

0 1 1 clkI/O/64

1 0 0 clkI/O/256

1 0 1 clkI/O/1024

1 1 0 外部T1

1 1 1 外部 T1

选择使用外部时钟源后,即使T1 引脚被定义为输出,其1 引脚上的逻辑信号电平变化仍然会驱动T/C1 计数,这个特性允许用户通过软件来控制计数。

(3)T/C1(TCNT1H 与TCNT1L)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

TCNT1[15:8]

TCNT1[7:0]

(主要是用来存数据)TCNT1H与TCNT1L组成了T/C1的数据寄存器TCNT1。通过它们可以直接对定时器/计数器单元的16 位计数器进行读写访问。为保证CPU 对高字节与低字节的同时读写,必须使用一个8 位临时高字节寄存器TEMP。TEMP 是所有的16 位寄存器共用的

在计数器运行期间修改TCNT1的内容有可能丢失一次TCNT1与OCR1x的比较匹配操作。写TCNT1 寄存器将在下一个定时器周期阻塞比较匹配。

(4)输出比较寄存器1A(OCR1AH与OCR1AL)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

OCR1A[15:8]

OCR1A[7:0]

(5)输出比较寄存器1B(OCR1BH与OCR1BL)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

OCR1B[15:8]

OCR1B[7:0]

{主要用来存数据}该寄存器中的16 位数据与TCNT1 寄存器中的计数值进行连续的比较,一旦数据匹配,将产生一个输出比较中断,或改变OC1x 的输出逻辑电平。

输出比较寄存器长度为16 位。为保证CPU 对高字节与低字节的同时读写,必须使用一个8 位临时高字节寄存器TEMP。TEMP 是所有的16 位寄存器共用的,

(6)输入捕捉寄存器1(ICR1H 与ICR1L)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

ICR1[15:8]

ICR1[7:0]

当外部引脚ICP1(或T/C1的模拟比较器)有输入捕捉触发信号产生时,计数器TCNT1中的值写入ICR1 中。ICR1 的设定值可作为计数器的TOP 值。

输入捕捉寄存器长度为16 位。为保证CPU 对高字节与低字节的同时读写,必须使用一个8 位临时高字节寄存器TEMP。TEMP 是所有的16 位寄存器共用的。

3. 定时器 2

(1)T/C 控制寄存器TCCR2

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20

FOC2: 强制输出比较位 FOC2仅在WGM指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,在使用PWM 时,写TCCR2要对其清零。对其写1 后,波形发生器将立即进行比较操作。比较匹配输出引脚 OC2 将按照COM21:0 的设置输出相应的电平。要注意FOC2类似一个锁存信号,真正对强制输出比较起作用的是COM21:0 的设置。 FOC2不会引发任何中断,也不会在利用OCR2作为TOP的CTC模式下对定时器进行清零的操作。

读FOC2 的返回值永远为0。 WGM21:0: 波形产生模式

这几位控制计数器的计数序列,计数器的最大值TOP,以及产生何种波形。T/C 支持的模式有:普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM 模式。

波形产生模式的位定义

模式

WGM21 WGM20 T/C 的工作模式TOP OCR2的更新时

TOV2 的置位时刻

0 0 0 普通0xFF 立即更新MAX

1 0 1 相位修正PWM 0xFF TOP BOTTOM

2 1 0 CTC OCR0 立即更新MAX

3 1 1 快速PWM 0xFF TOP MAX

COM21:0: 比较匹配输出模式

这些位决定了比较匹配发生时输出引脚OC2 的电平。如果COM21:0 中的一位或全部都置位, OC2 以比较匹配输出的方式进行工作。同时其方向控制位要设置为1 以使能输出驱动器。

当OC2 连接到物理引脚上时, COM21:0 的功能依赖于WGM21:0 的设置。下表给出了当WGM21:0 设置为普通模式或CTC 模式时COM21:0 的功能。

比较输出模式,非PWM 模式

COM21 COM20 说明

0 0 正常的端口操作,不与OC2相连接

0 1 比较匹配发生时OC2取反

1 0 比较匹配发生时OC2清零

1 1 比较匹配发生时OC2置位

比较输出模式,快速PWM 模式

COM21 COM20 说明

0 0 正常的端口操作,不与OC2相连接

0 1 保留

1 0 比较匹配发生时OC2清零,计数到TOP 时OC2置位

1 1 比较匹配发生时OC2置位,计数到TOP 时OC2清零

注意:一个特殊情况是OCR2 等于TOP,且COM21 置位。此时比较匹配将被忽略,而计数到TOP

时OC2 的动作继续有效。

比较输出模式,相位修正PWM 模式

COM21 COM20 说明

0 0 正常的端口操作,不与OC2相连接

0 1 保留

1 0 在升序计数时发生比较匹配将清零OC

2 ,降序计数时发生比较匹配将置位 OC2

寄存器和存储器的区别

https://www.doczj.com/doc/cb710988.html,/p-20032411.html

寄存器和存储器的区别

如果仅是讨论CPU的范畴 寄存器在cpu的内部,容量小,速度快 存储器一般都在cpu外部,容量大,速度慢 回答者:athlongyj - 高级经理六级6-1 08:52 从根本上讲,寄存器与RAM的物理结构不一样。 一般寄存器是指由基本的RS触发器结构衍生出来的D触发, 就是一些与非门构成的结构,这个在数电里面大家都看过; 而RAM则有自己的工艺,一般1Bit由六MOS管构成。所以, 这两者的物理结构不一样也导致了两者的性能不同。寄存器 访问速度快,但是所占面积大。而RAM相反,所占面积小, 功率低,可以做成大容量存储器,但访问速度相对慢一点。 1、 寄存器存在于CPU中,速度很快,数目有限; 存储器就是内存,速度稍慢,但数量很大; 计算机做运算时,必须将数据读入寄存器才能运算。 2、 存储器包括寄存器, 存储器有ROM和RAM 寄存器只是用来暂时存储,是临时分配出来的,断电,后,里面的内容就没了`````

寄存器跟存储器有什么区别? 一般数据在内存里面,要处理(或运算)的时候, 独到寄存器里面。 然后CPU到寄存器里面拿值,拿到运算核内部, 算好了在送到寄存器里面 再到内存 寄存器跟存储器有什么区别? 寄存器跟存储器有什么区别? 寄存器上:“一个操作码+一个操作数”等于一条微指令吗?一条微指令是完成一条机器指令的一个步骤对吗?cpu是直接跟寄存器打交道的对吗?也就是说寄存器是运算器、控制器的组成部分对不? 设计一条指令就是说把几条微指令组合起来对吗? 刚开始学硬件相关知识,学的晕头转向的!! 存储器与寄存器区别 2009-06-09 12:27 寄存器是CPU内部存储单元,数量有限,一般在128bit内,但是速度快,CPU访问几乎没有任何延迟。分为通用寄存器和特殊功能寄存器。 通常说的存储器是独立于cpu之外的,比如内存,硬盘,光盘等。 所有数据必须从存储器传入寄存器后,cpu才能使用。

CC2530常用寄存器归纳

P0SEL(P1SEL相同):各个I/O口的功能选择,0为普通I/O功能,1为 P2SEL:(D0到D2位)端口2 功能选择和端口1 外设优先级控制 什么是外设优先级:当PERCFG分配两个外设到相同的引脚时,需要设置这两 PERCFG:设置部分外设的I/O位置,0为默认I位置1,1为默认位置2

P0DIR(P1DIR相同):设置各个I/O的方向,0为输入,1为输出 P2DIR :D0~D4设置P2_0到P2_4的方向 D7、D6位作为端口0外设优先级的控制

P0INP(P1INP意义相似) :设置各个I/O口的输入模式,0为上拉/下拉,1 需要注意的是:P1INP中,只有D7~D2分别设置对应I/O口的输入模式。D1D0两位无作用。 P2INP:D0~D4控制P2_0~P2_4的输入模式,0为上拉/下拉,1为三态; D5~D7设置对P0、P1和P2的上拉或下拉的选择。0为上拉,1

P0IFG(P1IFG相同):终端状态标志寄存器,当输入端口有中断请求时,相应的标志位将置1。 P0IEN(P1IEN相同):各个控制口的中断使能,0为中断禁止,1为中断使能。 P2IFG:D0~D4为P2_0~P2_4的中断标志位D5为USD D+中断状态标志,当D+线有一个中断请求未决时设置该标志,用于检测USB挂起状态下的USB恢复事件。当USB控制器没有挂起时不设置该标志。 P2IEN:D0~D4控制P2_0~P2_4的中断使能 D5控制USB D+的中断使能

PICTL:D0~D3设置各个端口的中断触发方式,0为上升沿触发,1为下降沿触发。 D7控制I/O引脚在输出模式下的驱动能力。选择输出驱动能力增强来补偿引脚DVDD的低I/O电压,确保在较 低的电压下的驱动能力和较高电压下相同。0为最小驱动能力增强。1为最大 IEN0:中断使能0,0为中断禁止,1为中断使能 IEN1:中断使能1,0为中断禁止,1为中断使能

PLC中存储器的数据类型与寻址方式

一、数据在存储器中的存储方式 1、数据格式及要求 A〉数据格式:即指数据的长度和表示方式。B〉要求:S7-200对数据的格式有一定的要求,指令与数据之间的格式一致才能正常工作。 2、用一位二进制数表示开关量 A〉一位二进制数:一位二进制数有0(OFF)和1(ON)两种不同的取值,分别对应于开关量(或数字量)的两种不同的状态。B〉位数据的数据类型:布尔(Bool)型。C〉位地址:由存储器标识符、字节地址和位号组成,如I3.4等。D〉其它CPU存储区的地址格式:由存储器标识符和起始字节号(一般取藕字节)组成,如V B 100、V W 100、V D 100等。 3、多位二进制数(8421码) A〉数及数制:数用于表示一个量的具体大小。根据计数方式的不同,有十进制(D)、二进制(B)、十六进制(H)和八进制等不同的计数方式。B〉二进制数的表示:在S7-200中用2#来表示二进制常数,例如“2# 10111010 ”。C〉二进制数的大小:将二进制数的各位(从右往左第n位)乘以对应的位权(×2n-1),并将结果累加求和可得其大小。例如:2# 10111010 = 1×27+0×26+1×25+1×24+1×23+0×22+1×21+0×20 = 186 4、十六进制数 A〉十六进制数的引入:将二进制数从右往左每4位用一个十六进制数表示,可以实现对多位二进制数的快速准确的读写。B〉不同进制数的表示方法:( 表3-2-1 不同进制数的表示方 法) C〉十六进制数的表示:在S7-200中用16#来表示十六进制常数,例如“2# 1010 1110 0111 0101 可转换为16# AEF7 ”。D〉十六进制数的大小:将十六进制数的各位(从右往左第n位)乘以对应的位权(×16n-1),并将结果累加求和可得其大小。例如:16# 2F = 2×161+15×160 = 47 5、数据长度:字节(Byte)、字(Word)、双字(DoubleWord) A〉字节(B):从0号位开始的连续8位二进制数称为一个字节。B〉字(W):相邻的两个字节组成一个字的长度。C〉双字(DW):相邻的四个字节组成一个双字的长度。D〉字、双字长数据的存储特点:高位存低字节、地位存于高字节。 6、负数(有符号数)的表示方法 A〉负数的表示:PLC一般用二进制的补码来表示有符号数,其最高位为符号位(0 ——正数、1 ——负数)。B〉绝对值相等的正负有符号数间的关系:正数的补码是它本身。C〉不同数据的取值范围:( 表3-2-2 数据的位数与取值范围) 7、BCD码

计算机组成原理实验报告总结寄存器的原理及操作.doc

成绩:实验报告 课程名称:计算机组成原理 实验项目:寄存器的原理及操作 姓名: 专业:计算机科学与技术 班级: 学号:

计算机科学与技术学院 实验教学中心 20 16年6月20日

实验项目名称:寄存器的原理及操作 一、实验目的 1.了解模型机中 A, W 寄存器结构、工作原理及其控制方法。 2.了解模型机中寄存器组 R0..R3 结构、工作原理及其控制方法。 3.了解模型机中地址寄存器 MAR,堆栈寄存器 ST,输出寄存器 OUT寄存器结构、工作原理及其控 制方法。 二、实验内容 1、A、W寄存器:利用 COP2000实验仪上的K16..K23 开关做为DBUS的数据,其它开关做为控制信号, 将数据写入寄存器A, W。 2、R0、R1、R2、R3 寄存器实验:利用COP2000实验仪上的K16..K23 开关做为DBUS的数据,其它开 关做为控制信号,对数据寄存器组R0..R3 进行读写。 3、MAR、ST、OUT寄存器:利用COP2000实验仪上的K16..K23 开关做为DBUS的数据,其它开关做为 控制信号,将数据写入地址寄存器MAR,堆栈寄存器ST,输出寄存器OUT。 三、实验用设备仪器及材料 伟福 COP2000 系列计算机组成原理实验系统 四、实验原理及接线 实验 1:A,W 寄存器实验

实验 2 :R0,R1, R2,R3寄存器实验

MAR为存储器地址寄存器,其功能是存储操作数在内存中的地址,信号MAREN的功能是将数据总线DBUS上数据 MAR,信号 MAROE的功能是将MAR的值送到地址总线ABUS上 ST 堆栈寄存器的作用,是出现中断或子程序调用时,保存断点处PC 的值,以便中断或子程序结束时, 能继续执行原程序。图中,信号STEN的作用是将数据总线DBUS上数据存入堆栈寄存器ST 中

单片机各寄存器汇总

符号 地址功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H 串行口锁存器 SCON 98H 串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH 定时器/计数器1(高8位)TH0 8CH 定时器/计数器1(低8位)TL1 8BH 定时器/计数器0(高8位)TL0 8AH 定时器/计数器0(低8位) TMOD 89H 定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 DPTR 82H 83H 83H数据地址指针(高8位) PC SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 电源控制寄存器 、PSW-----程序状态字。 D7D6D5D4D3D2D1D0 CY AC F0 RS1 RS0 OV P 下面我们逐一介绍各位的用途 CY:进位标志。 AC:辅助进、借位(高半字节与低半字节间的进、借位)。 F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0:工作寄存器组选择位。这个我们已知了。 0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P :奇偶校验位:它用来表示ALU 运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。 运算结果有奇数个1,P =1;运算结果有偶数个1,P =0。 例:某运算结果是78H (01111000),显然1的个数为偶数,所以P=0。 定时/计数器寄存器 1.工作方式寄存器TMOD(P134) TMOD 为T0.T1的工作方式寄存器,其各位的格式如下:TMOD D7 D6 D 5 D4 D3 D2 D1 D0 GATE C/-T M1 M0 GATE C/-T M1 M0 定时器1 定时器0 位7 GATE ——T1的门控位。 当GATE=0时,只要控制TR1置1,即可启动定时器T1开始工作; 当GATE=1时,除需要将TR1置1外,还要使INT1引脚为高电平,才能启动相应的定时器开始工作。 位6 C/—T ——T1的功能选择位。 当C/—T=0时,T1为定时器方式; 当C/—T=0时,T1为计数器方式; 位5和位4 M1和M0——T1的方式选择位。 由这两位的组合可以定义T1的3种工作方式 定时器T1工作方式选择表 如右表: 位3 GATE ——T0的门控位。 当GATE=0时,只要控制TR0置1,即可启动定时器T0开始工作; 当GATE=1时,除需要将TR0置1外,还要使INT0引脚为高电平,才能启动相应的定时器开始工作。 位2 C/T ——T1的功能选择位。 当C/—T=0时,T0为定时器方式; 当C/—T=0时,T0为计数器方式; 位1和位0 M1和M0—T0的方式选择位。 由这两位的组合可以定义T1的3种工作方式 定时器T0工作方式选择表 TMOD 不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半节定义定时器0,高半字节定义定时器1。复位时,TMOD 所有位均为0,定时器处于停止工作状态。 定时/计数器控制寄存器中断请求标志寄存器TCON(P183) TCON 的作用是控制定时器的启/停,标志定时器的溢出和中断情况。定时器控制寄存器TCON 各位格式如下:TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 当有中断源发出请求时,有硬件将相应的中断标志位置 1.在中断请求被响应前,相应中断标志位被锁存在特殊功能寄存器TCON 或SCON 中。 TCON 为定时器T0和T1的控制寄存器,同时也锁住T0和T1的溢出中断标志及外部中断——INT0和— M1 M0 工作方式 功能描述 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式 2 自动再装入8位计数器 1 1 方式3 定时器1:停止计数 M1 M0 工作方式 功能描述 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式 2 自动再装入8位计数器 1 1 方式3 定时器0:分成2个8位计数器

详细分析MCS-51单片机内部数据存储器RAM

详细分析MCS-51单片机内部数据存储器RAM 8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。 寄存器区 8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH单元地址。 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定。通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度。此外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。 位寻址区 内部RAM的20H~2FH单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16个RAM单元,计128位,地址为00H~7FH。MCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。 用户RAM区 在内部RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H~7FH。对用户RAM 区的使用没有任何规定或限制,但在一般应用中常把堆栈开辟在此区中。 内部数据存储器高128单元

PIC单片机各寄存器汇总资料讲解

1) 芯片的振荡模式选择。 2) 片内看门狗的启动。 3) 上电复位延时定时器PWRT的启用。 4) 低电压检测复位BOR模块的启用。 5) 代码保护。 __CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ; _CP_OFF 代码保护关闭 _WDT_OFF 看门狗关闭 _BODEN_OFF _PWRTE_ON 上电延时定时器打开 _XT_OSC XT振荡模式 _WRT_OFF 禁止Flash程序空间写操作 _LVP_OFF 禁止低电压编程 _CPD_OFF EEPROM数据读保护关闭 LVP Low Voltage Program 低电压编程 CP Code Protect 代码保护 Date EE Read Protect EEPROM数据读保护 Brown Out Detect Power Up Timer Watchdog Timer Flash Program Write 外部时钟输入(HS,XT或LP OSC配置)如下图: 陶瓷(ceramic)谐振器电容的选择如下表:

一般情况为:11 1111 0011 0001 0x3F31 或0x3F71 位13 CP:闪存程序存储器代码保护位1 1=代码保护关闭 0=所有程序存储器代码保护 位12 未定义:读此位为1 1 位11 DEBUG:在线调试器模式位1 1=禁止在线调试器,RB6和RB7是通用I / O引脚 0=在线调试功能开启,RB6和RB7专用于调试 位10:9 WRT1:WRT0:闪存程序存储器的写使能位11 PIC16F876A / 877A 11=写保护关闭,所有的程序存储器可能被写入由EECON控制 10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制 01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制 00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制 位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭 0=数据EEPROM存储器代码保护功能开启 位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用 0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程 位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用 0=低电压检测复位BOR(BOD)模块关闭 位5:4 未定义:读此两位均为1 11 位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0 1=上电定时器关闭 0=上电定时器开启 位2 WDT:看门狗定时器使能位0晶体振荡器电容的选择 1=看门狗开启如右图: 0=看门狗关闭 位1:0 Fosc1:Fosc0:振荡器选择位01 11=RC振荡器 10=晶体振荡器HS模式。参考振荡频率范围:>2 MHz 01=晶体振荡器XT模式。参考振荡频率范围:100 kHz ~ 4 MHz 00=晶体振荡器LP模式。参考振荡频率范围:<200 kHz

3.单片机的存储器、寄存器及位地址空间

单片机的存储器有几种?多存放何种内容和信息? 答:单片机的存储器有程序存储器ROM与数据存储器RAM两种。 这两种存储器在使用上是严格区分的,不得混用。 程序存储器存放程序指令,以及常数,表格等;而数据存储器则存放缓冲数据。 MCS-51单片机存储器的结构有哪几部分? 答:MCS-51单片机存储器的结构共有3部分: 一是程序存储器 二是内部数据存储器 三是外部数据存储器 MCS-51单片机的存储器分为哪几类? 答:MCS-51单片机的存储器可分为5类:程序存储器、内部数据存储器、特殊功能寄存器、位地址空间、外部数据存储器。 程序存储器用于存放什么内容?它可寻址的地址空间是多少? 答:程序存储器用于存放编号的程序和表格常数 程序存储器以程序计数器PC作地址指针 由于MCS-51单片机的程序计数器为16位,因此可寻直的地址为64KB。 MCS-51单片机复位后,对系统有何要求? 答:单片机复位后,程序计数器PC的内容为0000H,所以系统必须从0000H单元开始取指令来执行程序。

0000H单元是系统的起始地址,一般在该单元存放一条绝对跳转指令(LJMP) 而用户设计的主程序,则从跳转后的地址开始安放。 MCS-51单片机内部数据存储器是怎样设置的? 答:MCS-51单片机内部有128个字节的数据存储器,内部RAM编址为00H~7FH。 MCS-51对其内部的RAM存储器有很丰富的操作指令,方便了程序设计。 单片机内部数据存储器的特点是什么? 答:工作寄存器和数据存储器是统一编址的,这是单片机内部存储器的主要特点。 什么是堆栈?MCS-51单片机的堆栈怎样设置的? 答:程序设计时,往往需要一个后进先了的RAM区,以保存CPU的现场。这种后进先出的缓冲区,就称为堆栈。 MCS-51单片的堆栈原则上设在内部RAM的任意区域内。但是,一般设在31H~7FH的范围之间,栈顶的位置由栈指针SP指出。 什么是特殊功能寄存器? 答:特殊功能寄存器是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区。 MCS-51单片机特殊功能寄存器的作用是什么? 答:特殊功能寄存器的作用是对片内各功能模块进行管理、控制和监视。 MCS-51单片机特殊功能寄存器是怎样设置的? 答:MCS-51单片机内的I/O口锁存器、定时器、串行口缓冲器以及各种控制寄存器和状态寄存器都以特殊功能寄存器的形式出现。

指令对标志寄存器的影响总结

指令类型助记符对标志寄存器的影响备注 ZF CF PF SF OF AF DF IF TF 数据传送类通用MOV 不影响标志位 交换XCHG 堆栈 操作 PUSH POP 地址 传送 LEA LDS LES 累加器 专用IN OUT XALT 标志 寄存器 LAHF SAHF 标志寄存器低八位的内容由AH的值决定CF,AF,ZF,SF,PF的值会被影响 PUSHF 不影响标志位 POPF 标志寄存器的内容由装入的具体值决定可能影响所有标志位 算术运算类加法 指令 ADD √√√√√√ ADC √√√√√√ INC √√√√√INC指令不影响CF AAA ?√???√?表示不确定或者未定义 DAA √√√√?√ 减法 指令 SUB √√√√√√ SBB √√√√√√ DEC √√√√√DEC指令不影响CF AAS ?√???√ DAS √√√√?√DAA指令不影响OF 乘法 指令 MUL ?√??√? IMUL ?√??√? AAM √?√√?? 除法 指令 DIV ??????√√此指令可能会产生中断,故影响IF,TF IDIV ??????√√同上 AAD √?√√?? 符号位 扩展 CBW 不影响标志位 CWD 不影响标志位 比较指令CMP 由计算结果确定标志位的值不会影响到DF,IF,TF 逻辑运算类单 操 作 数 逻 辑 指 求反NOT 不影响标志位 移位 SAL √√√√见 备 注 ?OF标志位只在移位次数是1时 有效,AF未定义SHL √√√√? SAR √√√√? SHR √√√√? 循环 移位 ROL √√? 循环移位指令影响OF和CF,ROR √√?

存储器寻址方式

存储器寻址方式 存储器寻址方式的操作数存放在主存储器中,用其所在主存的位置表示操作数。在这种寻址方式下,指令中给出的是有关操作数的主存地址信息。8088的存储器空间是分段管理的。程序设计时采用逻辑地址;由于段地址在默认的或用段超越前缀指定的段寄存器,所以采用偏移地址,称之为有效地址(Effective Address, EA) 1.直接寻址 在这种寻址方式下,指令中直接包含了操作数的有效地址,跟在指令操作码之后。其默认的段地址在DS段寄存器中,可以采用段超越前缀。 例将数据段中偏移地址2000H处的内存数据送至AX寄存器。 MOV AX, [2000H] 该指令中给定了有效地址2000H, 默认与数据段寄存器DS一起构成操作数所在存储单元的物理地址。 如果DS=1429H,则操作数所在的物理地址为1429H*16+2000H=16920H. 该指令的执行结果是将16920H单元的内容传送至AX寄存器,其中,高字节内容送AH寄存器,低字节内容送AL寄存器。

MOV AX, [2000H];指令代码:A1 00 20 例: 将附加段中偏移地址2000H 处的内存数据送至AX 寄存器。 MOV AX, ES:[2000H]; 指令代码:26 A1 00 20 变量指示内存的一个数据,直接引用变量就是采用直接寻址方式。变量应该在数据段进行定义,常用的变量定义伪指令DB 和DW 分别表示字节变量和字变量,例如 WV AR DW 1234H; 定义字变量WV AR ,它的初值是1234H 这样,标示符WV AR 表示具有初值1234H 的字变量,并由汇编程序为它内存分配了两个连续的字节单元。假设它在数据段偏移地址是0010H 。 例:将数据段的变量WV AR (即该变量名指示的内存单元数据)送至AX 寄存器。 MOV AX, WV AR; 指令功能: 上述指令实质就是如下指令: AX WV AR AX DS :[0010H]

单片机寄存器汇总表图文稿

单片机寄存器汇总表 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

51单片机寄存器功能一览表 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离

不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。 8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 AC:辅助进、借位(高半字节与低半字节间的进、借位)。 例:57H+3AH(01010111+00111010)

Ia-32寄存器总结

EAX:累加寄存器 ECX:计数寄存器,常用于计数 EDX :数据寄存器,常用于数据传递 EBX :基址寄存器,常用于地址索引 ESP :ESP为堆栈指针,指向当前栈顶 EBP :EBP为帧指针,当前活动记录的顶部 ESI :变址寄存器,源地址指针,存储单元在段内的偏移量, EDI :变址寄存器目标地址指针 EIP :指令寄存器,存放当前指令的下一条指令的地址 ES:附加段寄存器 CS:代码段寄存器 SS:堆栈段寄存器 DS:数据段寄存器 FS:寄存器指向当前活动线程的TEB结构 000 指向SEH链指针 004 线程堆栈顶部 008 线程堆栈底部 00C SubSystemTib 010 FiberData 014 ArbitraryUserPointer 018 FS段寄存器在内存中的镜像地址 020 进程PID 024 线程ID 02C 指向线程局部存储指针 030 PEB结构地址(进程结构) 034 上个错误号 GS:全局寄存器 EFL:标志位寄存器,各标志位的含义如下图, DF:是控制标志位为方向标志,在串处理指令中控制处理信息的方向用。当DF为1时,每次操作后使变址寄存器SI和DI减小,这样就使串处理从高地址向低地址方向处理。当DF为0时相反. TF当TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试

ZF表示目的操作数结果为零 AF表示(AL为一个字节)相加进行到一半(低4位)有没有向另一半(高4位)进位,也可以表示是否借位(减法) PF表示为偶数 CF表示已经发生进位,也可以表示借位 操作标志位寄存器汇编指令 LAHF 标志寄存器传送,把标志装入AH. SAHF 标志寄存器传送,把AH内容装入标志寄存器. PUSHF 标志入栈. POPF 标志出栈. PUSHD 32位标志入栈. POPD 32位标志出栈. 浮点寄存器:(80位) ST0 ST1 ST2 ST3 ST4 ST5 ST6 ST7 FST :协处理器状态寄存器 FCW:浮点控制寄存器具体参考https://www.doczj.com/doc/cb710988.html,/design/processor/manuals/253665.pdf MM0:多媒体指令寄存器 MM1 MM2 MM3 MM4 MM5 MM6 MM7 DR0 :调试寄存器 DR1 DR2

程序存储器 指令寄存器 程序计数器(PC,IP) 地址寄存器的区别与联系

先明白定义再说区别和原理: 1、程序存储器(program storage) 在计算机的主存储器中专门用来存放程序、子程序的一个区域。 2、指令寄存器(IR ):用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。 3、程序计数器(PC):为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器

(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。 当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的地址,以此实现转移。有些机器中也称PC为指令指针IP(Instruction Pointer) 4、地址寄存器:用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。 当CPU和内存进行信息交换,即CPU向内存存/ 取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用地址寄存器和数据缓冲寄存器。

32位PowerPC构架通用寄存器分析及总结三

32位PowerPC构架通用寄存器分析及总结三 4.6SR(Segment Registers)寄存器 OEA定义了16个32位的SR寄存器,段寄存器SR可以使用mtsr/mfsr,mtsrin/mfsrin指令进程访问。 随着CR[0]位(我们称之为T位)的值的不同,CR寄存器有两种不同的格式。 当T位为1时格式如下: CR[1]位:系统模式保护位 CR[2]位:用户模式保护位 CR[3]位:不可执行保护位 CR[4:7]位:保留位 CR[8:31]位:VSID位,我们在4.5节页面地址映射中已经看到该位段的作用。 当T位为0时格式如下: CR[1]位:系统模式保护位 CR[2]位:用户模式保护位 CR[3]位:不可执行保护位 CR[3:11]位:Bus unit ID CR[12:31]位:Device-specific data for I/O controller 备注:这个位段,我现在不清楚,暂时附上datasheet原文,以后再修改O(∩_∩)O~ 4.7 DAR(Data Address Register)寄存器 存放访存指令产生的引发中断的有效地址,比较简单。 格式如下: 4.8 SPRG0–SPRG3寄存器 提供给操作系统使用,格式如下:

SPRG0:操作系统可能会加载一个独立的物理地址到该寄存器中,来标识一个内存区域是第一级的中断句柄专用的。 SPRG2:可以被第一级的中断来保存通用寄存器的内容,该内容可以作为内存中保存其它通用寄存器的基地址。 SPRG2和SPRG3可以在操作系统需要时使用! 备注:E600有8个SPRGs寄存器。 4.9 DSISR寄存器 用来决定DSI中断的中断源,格式如下: 4.10 SRR0(Machine Status Save/Restore Register 0)寄存器 当发生中断时,SRR0用来保持中断发生的那一刻MSR的状态,当中断返回结束执行rfi指令时,SRR0用来恢复MSR寄存器的值,它也可以用来保持系统调用之前的那条指令的有效地址,当系统中断结束时会执行rfi指令,汇编SPR0保持的地址赋值给NIA(Next Instruction Address)寄存器(也就是我们通常说的PC寄存器) 格式如下: 4.11 SRR1(Machine Status Save/Restore Register 1) 该寄存器同4.10 4.12 FPECR(Floating-Point Exception Cause Register)

32位PowerPC构架通用寄存器分析及总结一

32位PowerPC构架通用寄存器分析及总结一 第一部分 32位 PowerPC构架下寄存器概述 32 位PowerPC构架寄存器模型可以分成三个类级别:UISA,VEA,OEA,我们根据这三个级别把PowerPC所使用的所有寄存器分为三类: 第一类:用户指令集构架(UISA-User Instruction Set Architecture)下所使用的寄存器;第二类:虚拟环境构架(VEA-Virtual Environment Architecture)下所使用的寄存器;第三类:操作系统环境(OEA-Operating Environment Architecture)下所使用的寄存器;PowerPC指令集构架为所有的算术逻辑运算指令定义了“寄存器到寄存器”格式的指令,这些指令的操作数来自或者来自于寄存器,或者来自于指令中的立即数。而对于“三寄存器”格式的指令,PowerPC指令集定义其中一个寄存器用来存目的操作数,另外两个寄存器用来存放源操作数。这样的话,存放源操作数的寄存器还可以被其它指令使用,从而减少了某些操作的指令数目。并且对于访问寄存器,PowerPC构架定义了明确的load和store访存指令(这是RISC指令集的典型特点)。 备注:寄存器中的保留位允许软件写任何值(其实就是0或者1),但是读出来的值,未必是我们写出来的值。它的值依赖于具体的执行系统。 接下来,我们分别来介绍这三类寄存器。 第二部分 UISA寄存器集合 用户模式下的寄存器可以被所有的用户级软件和特权级软件所使用,它包含以下的寄存器:32个通用寄存器GPRs(General-purpose registers):GPR0-GPR31; 32个浮点寄存器FRPs(Floating-point registers):FPR0-FPR31; 1个条件寄存器:CR(Condition register); 1个XER寄存器; 1个LR(Link register)寄存器; 1个CTR(Count register)寄存器; 1个浮点状态控制寄存器:FPSCR(Floating-point status and control register); 备注:不管是单精度数还是双精度数,在浮点寄存器中都是以双精度格式存储。 示意图如下:

寄存器实验报告

寄 存 器 实 验 报 系别:信息技术系 专业:计算机科学与技术 班级:计科142 姓名:康道顺 学号:201401014233

实验一寄存器实验 一、实验目的 (1)了解模型机中A, W寄存器结构、工作原理及其控制方法。 (2)了解模型机中寄存器组R0..R3结构、工作原理及其控制方法。 二、实验要求 (1)A、W寄存器:利用COP2000实验仪上的K16..K23开关做为DBUS的数据, 其它开关做为控制信号,将数据写入寄存器A,W。 (2)R0、R1、R2、R3寄存器实验:利用COP2000实验仪上的K16..K23开关 做为DBUS的数据,其它开关做为控制信号,对数据寄存器组R0..R3进 行读写。 三、实验说明 寄存器的作用是用于保存数据的,因为我们的模型机是8位的,因此在本模型机中大部寄存器是8位的,标志位寄存器(Cy, Z)是二位的。 COP2000用74HC574来构成寄存器。74HC574的功能如下: 注意: 1. 在CLK的上升沿将输入端的数据打入到8个触发器中

74HC574工作波形图 四、实验原理 实验1:A,W寄存器实验 (1)原理图 寄存器A原理图 寄存器W原理图(2)工作波形图

寄存器A,W写工作波形图 (4)实验数据 例:将55H写入A寄存器 二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据55H。 置控制信号为: 按住CLOCK脉冲键,CLOCK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。放开CLOCK键,CLOCK由低变高,产生一个上升沿,数据55H 被写入A寄存器。 a)将66H写入W寄存器 。。。。。。 实验2:R0,R1,R2,R3寄存器实验 (1)原理图

单片机总结汇总

单片机总结 第一章 (一)知识点梳理 1.1946年2月15日,第一台电子数字计算机问世。 冯·诺依曼提出“程序存储”和“二进制运算”的思想,构建了计算机经典结构: 存储器输出设备输入设备 控制器运算器 <1>电子计算机经历了五个时代电子管计算机;晶体管计算机;集成电路计算机;大规模集成电路计算机;超大规模集成电路计算机 微处理器+存储器+I/O 接口= 微型计算机 微处理器 地址总线AB 数据总线DB 控制总线CB 存储器I/O接口I/O设备 3.8051内含1个8位CPU、128个字节的RAM、4K字节的ROM,4个8位并行I/O口、1个全双工的串行口、2个16位的定时器/计数器。 4.P3口的第二功能 P3.0——RXD(串行输入口) P3.1——TXD(串行输出口) P3.2——INT0(外部中断0) P3.3——INT1(外部中断1) P3.4——T0(定时器0外部输入)(两个16位可编程定时/计数器,分别由两个8位寄 P3.5——T1(定时器1外部输入)存器拼装而成。最大计数值为216-1,即65535。) P3.6——WR(外部数据存储器写控制) P3.7——RD(外部数据存储器读控制) 5.8051内部CPU是由三部分电路构成:运算器(ALU)、控制器(定时控制部件等),专用寄存器组。其中8051 ALU由1个加法器、2个8位暂存器(TMP1与TMP2)和1个布尔处理器组成。 6.51系列单片机的机器周期时间是固定不变的,均有12个时钟周期T组成,分为6个状态

1个指令周期= 1~4个机器周期;1个机器周期= 6个状态,1个状态= 2个时钟周期7.复位的主要功能: (1).把PC初始化为0000H,使CPU从0000H单元开始执行程序;(2).当程序运行出错或操作错误系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。 复位后的内部寄存器状态 专用寄存器复位状态专用寄存器复位状态 PC 0000H TMOD 00H Acc (累加器A) 00H TCON 00H B 00H TH0 00H PSW 00H TL0 00H SP 07H TH1 00H 栈底地址固定不变,栈顶地址始终在SP中,可变. DPTR 0000H TL1 00H P0—P3 FFH SCON 00H IP xxx0 0000B SBUF xxxx xxxxB IE 0xx0 0000B PCON 0xxx 0000B 8特殊功能寄存器(SFR) 8051有21个SFR,每个SFR占有一个RAM单元,他们分布在80H~FFH地址范围内。8051的寻址范围是64KB。(0000H-FFFFH) 9.数据存储器:片内存储器——集成在芯片内部 片外存储器——MCS—51只提供地址和控制命令,需要通过外部三总线才能工作。 内部RAM(00H—7FH, 低128B(单元为真正的RAM); 80H—FFH, 高128B(特殊功能寄存器))外部RAM(0000H——FFFFH,64K单元) ROM地址空间(片内4K、片外60K), 0000H-FFFFH; 注意:位地址与字节地址的区别7F---位地址;2FH.7字节地址(见课件) 10.程序状态寄存器:RS1,RS0——寄存器选择位(用于决定8051的8个8位工作寄存器R0~R7在RAM中的实际物理地址)内部RAM 00H—7FH, 低128B RS1,RS0R0~R7的组号R0—R7的物理地址 00000H~07H 01108H~0FH 10210H~17H 11318H~1FH 位寻址存储器(位寻址区):20H——2FH 缓冲存储器(堆栈区):30H——7FH 11单片机定义:即单片微型计算机,由单块集成电路芯片构成,内部集成了计算机的基本功能部件CPU、存储器和I/O接口电路。 12单片机优势:单片机体积小、价格低、可靠性高,其非凡的嵌入式应用形态对于满足嵌入式应用需求具有独特的优势。

寄存器、存储器、COACH的区别

寄存器跟存储器有什么区别? 如仅讨论CPU的范畴:寄存器是CPU内部存储单元,在cpu的内部,,寄存器只是用来暂时存储,是临时分配出来的,断电,后,里面的内容就没了,容量小,速度快,数目有限,CPU访问几乎没有任何延迟,分通用寄存器、特殊功能寄存器,寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 存储器范围最大,它几乎涵盖了所有关于存储的范畴。你所说的寄存器,内存,都是存储器里面的一种。凡是有存储能力的硬件,都可以称之为存储器,这是自然,硬盘更加明显了,它归入外存储器行列,由此可见——。而通常说的存储器是独立于cpu之外的,,容量大,速度稍慢,比如内存,硬盘,光盘等。 从根本上讲,寄存器与RAM的物理结构不一样。一般寄存器是指由基本的RS触发器结构衍生出来的D触发,就是一些与非门构成的结构,这个在数电里面大家都看过;而RAM则有自己的工艺,一般1Bit由六MOS管构成。所以,这两者的物理结构不一样也导致了两者的性能不同。寄存器访问速度快,但是所占面积大。而RAM相反,所占面积小,功率低,可以做成大容量存储器,但访问速度相对慢一点。 一般数据在内存里面,要处理(或运算)的时候,读到寄存器里面,然后CPU到寄存器里面拿值,拿到运算核内部,算好了在送到寄存器里面,再到内存。 寄存器和cache区别 cache是一个高速小容量的临时存储器,可以用高速的静态存储器芯片实现,或者集成到CPU芯片内部,存储CPU最经常访问的指令或者操作数据。 而寄存器不同,寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径,寄存器存放的是当前CPU环境以及任务环境的数据,而cahe则存放最近经常访问的指令和数据的.

相关主题
相关文档 最新文档