单片机复习重点。
1.单片机的堆栈指针sp始终是指示堆栈顶 。
2.当程序状态字寄存器psw状态字中rs1和rs0分别为0和1 时,系统先用的工作寄存器组为组1 。
3.定时器t1的中断入口地址是 001bh 。
4.8051定时/计数器共有四种操作模式,由tmod寄存器中m1 m0的状态决定,当m1 m0的状态为01 时,定时/计数器被设定为 16位定时/计数器 。
5.串行口的工作方式由 scon 寄存器决定。
6. 定时器t0的溢出标志tf0,在cpu响应中断后由硬件自动清零。
7.扩展程序存储器2764时,需要 5 条p2口线。
8.若单片机的振荡频率为6mhz,设定时器工作在方式1需要定时1ms,则定时器初值应为 216-500 。
9.扩展存储器时要加锁存器373,其作用是锁存寻址单元的低八位地址 。
11.8051单片机中,唯一一个用户可使用的16位寄存器是 dptr 。
12.8051的程序计数器pc为16位计数器,其寻址范围是 0000h-ffffh ,64kb 。
13.单片机应用程序一般存放在 rom 中。
单片机在同一优先级的中断源同时申请中断时,cpu首先响应外部中断0 。
15.定时器若工作在循环定时或循环计数场合,应选用工作方式2
单片机的外部中断1的中断请求标志是 it1 。
17.中断入口地址一般可存放转移指令 。
18.串行口每一次传送 1帧字符。
19.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到 p3.5/ t1 引脚。
20某应用系统需要通过p1.0输出脉宽为500us的方波,系统选用定时器/计数器0(t0),定时方式3,主频为12mhz。试写出相应的程序。 (参考课件例题)
c语言程序(中断方式) :
# include <>包含特殊功能寄存器库。
sbit p1_0=p1^0;
void main( )
tmod=0x03设置工作模式。
tl0=0x06;
th0=0x06为定时器赋初值。
et0=1允许定时0中断。
ea=1;tr0=1启动定时器0
while(1等待中断。
void time0_int(void) interrupt 1
p1_0=~p1_0;
中断方式汇编语言程序:
org 0000h
ljmp main
org 000bh ;中断处理程序。
cpl p1.0
reti org 0030h ;主程序
main:
movsp, #0dfh
movtmod,#02h
movtl0, #06h
movth0, #06h
setb et0 ;允许定时器0中断。
setb ea ;允许cpu中断。
setb tr0 ;启动定时器0
sjmp等待中断。
end采用查询方式c语言程序:
# include <>
sbit p1_0=p1^0;
void main()
tmod=0x02;
tl0=0x06;
th0=0x06;
tr0=1;
while (1)
while(!tf0) ;查询计数溢出tf0=0;
p1_0=~p1_0;
查询方式汇编语言程序:
main:
mov tmod,#02h ;主程序。
mov tl0,#06h
mov th0,#06h
setb tr0
loop:
jnb tf0查询计数溢出。
clr tf0
cpl p1.0
sjmp loop
end 21.将片内ram 50h~5fh中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为11.0592 mhz,波特率为2400 b/s,编制串行口方式3的发送程序。
(参考课件例题)
解:用tb8作奇偶校验位,在数据写入发送缓冲器之前.先将数据的奇偶位p写入tb8,这时,第9位数据作奇偶校验用,发送采用中断方式。
c语言程序清单:
#include<>
unsigned char i=0;
unsigned char array[16] _at_ 0x50; /发送缓冲区。
void main()
scon=0xc0串行口初始化。
tmod=0x20定时器初始化。
th1=0xf4; tl1=0xf4;
tr1=1;
es=1ea=1; /中断初始化。
acc=array[i发送第一个数据送。
tb8=p累加器,目的取p位。
sbuf=acc发送一个数据。
while(1等待中断。
void server() interrupt 4 //串行口中断服务程序。
ti=0清发送中断标志。
acc=array[++i取下一个数据。
tb8=p;
sbuf=acc;
if(i==16发送完毕,es=0禁止串口中断。
汇编语言程序清单:
org 0000h
sjmp main上电,转主程序。
org 23h
sjmp server转中断服务程序。
main:
mov scon,#0c0h ;串行口方式3初始化。
mov tmod,#20h ;定时器1工作在方式2
mov th1,#0f4h
mov tl1,#0f4h
setb tr1
setb es允许串行口中断。
setb eacpu开中断。
mov r0,#50h
mov r7,#0fh
mov a,@r0
mov c,p
mov tb8,c送奇偶标志位到tb8
mov sbuf,a发送第一个数据。
sjmp $
server:
clr ti清除发送中断标志。
inc r0修改数据地址。
mov a,@r0
mov c,p
mov tb8,c
mov sbuf,a发送下一个数据。
djnz r7,endt判断数据块是否发送完。
clr es否则,禁止串行口中断。
endt:
reti中断返回。
22.编写一个接收程序,将接收的16字节数据送入片内ram 50h~5fh单元中。设第9个数据位作奇偶校验位,晶振为11.
059 2 mhz,波特率为2 400b/s。(参考课件例题)
解:rb8作奇偶校验位,接收时,取出该位进行核对,接收采用查询方式。
c语言程序清单:
#include<>
unsigned char i;
unsigned char array[16] _at_ 0x50接收缓冲区。
void main()
scon=0xd0串行口初始化,允许接收。
tmod=0x20;
th1=0xf4;
tl1=0xf4;
tr1=1;
for(i=0;i<16;i循环接收16个数据。
while(1);
汇编语言程序清单:
main:mov tmod,#20h ;定时器初始化。
mov th1,#0f4h
mov tl1,#0f4h
setb tr1
mov scon,#0d0h ;串口初始化,允许接收。
mov r0,#50h ;首地址送r0
mov r7,#10h ;数据长度送r7
wait: jnb ri等待接收完成。
clr ri清中断标志。
mov a,sbuf ;读数到累加器。
jnb p,pnpp=0,转pnp
jnb rb8,error ;p=1,rb8=0,转出错。
sjmp right
pnp: jb rb8,error ;p=0,rb8=1,转出错。
right: mov @r0,a存数。
inc r0修改地址指针。
djnz r7,wait ;未接收完,继续。
clr f0置正确接收标志f0=0
reterror: setb f0置错误接收标志f0=1
ret23.设计一个独立式按键的键盘接口,并编写键扫描程序,电路原理图如图所示,键号从上到下分别。
为0~7。(10分)(参考课件例题)
c语言程序清单:
#include<>
void key()
unsigned char k;
p1=0xff输入时p1口置全1
k=p1读取按键状态。
if(k==0xff无键按下,返回。
return;
delay20ms有键按下,延时去抖。
k=p1;if(k==0xff确认键按下。
return抖动引起,返回。
while(p1!=0xff等待键释放。
switch(k)
汇编语言程序清单:
key: mov p1,#0ffh ;p1口为输入口。
mov a, p1 ;读取按键状态。
cpl a取正逻辑。
jz ekey无键按下,返回。
lcall delay20ms有键按下,去抖。
mov a, p1
cpl ajz ekey抖动引起,返回。
mov b, a存键值。
key1: mov a, p1 ;以下等待键释放。
cpl ajnz key1未释放,等待。
单片机复习
12 用某定时器产生某一频率的占空比 高电平宽度与周期之比 分别为 矩形波信号,由单片机某一i o口线输出,并用示波器观其波形。可以用查询法或中断法检测定时时间到,但两种方法必须都会 会计算定时器定时初值,会初始化tmod tcon ie 13 外中断应用 二进制计数器的设计,用按键模拟外部中断源,...
单片机期末复习卷
1.在51单片机中,同级的中断可以相互打断,这种说法是 2.中断的响应是有一定的条件的,当在一些特殊情况时,可能不会被响应,这种说法是 3.数码管按公共端的不同,可以分为共阴和共阳两种,这种说法是 4.单片机区别于微型计算机的最典型的特点是具有较强的控制功能。这种说法是 5.仅仅依靠单片机自身就可以...
单片机复习题2019 末
单片机期末复习。第三章。1.单片机除了微处理器外,一般还集成了哪些功能部件?单片机组成 cpu 存储器输入输出接口时钟电路定时 计数器中断控制系统。2.简述8051单片机的特点。51单片机是8位的微处理器,有节 b 的数据存储器ram,4kb的只读存储器rom,2个16位的定时 计数器,4个8位并行...