单片机实验报告1

  • 格式:doc
  • 大小:37.50 KB
  • 文档页数:4

单片机实验报告
一、实验目的:
1)熟悉汇编语言,能用汇编语言编写单片机程序。

2)对stm8的功能有进一步的了解,掌握串行通信技术。

3)通过串口助手发送一个字符,STM8接收到后,将接收到
的字符发送给串口助手,并显示出来。

发送、接收采用
查询的方法;波特率为9600
4)通过串口助手发送一个字符,STM8接收到后,将接收到
的字符发送给串口助手,并显示出来。

接收采用中断,
发送采用查询的方法;波特率为9600
二、实验仪器:
stm8s105c6单片机、单片机开发试验仪、杜邦线
三、实验内容:
1、步骤:
1)接线。

将单片机与电脑连接起来,将转接板借入单片机试验仪,用电脑的串口通信的线与单片机实验仪连接起来。

2)编写程序。

在电脑上运行ST V isual Develop 软件,建立工程文件;选CPU型号。

然后编写代码,编译,检查是否有错误与警告,如果有,则对程序进行修改。

3)下载程序。

如果没有,就进行程序调试,把程序下载到stm8单片机里面。

4)运行程序,打开串口调试助手,查看发送与接收的状态。

2、主程序(要有注释):
程序1:发送和接受采用查询方式
intel
;初始化PB,推挽输出,用于数码管段驱动;
mov UART2_CR1,#0
mov UART2_CR2,#0
mov UART2_CR3,#0
mov UART2_BRR2,#0
mov UART2_BRR1,#0dh ;设置波特率为9600
mov UART2_CR2,#0ch
loop:
call receive_char ;调用接受函数
call send_char ;调用发送函数
jra loop
;发送函数
send_char:
here
btjf UART2_SR,#7,here
ld UART2_DR,a
ret
:接收函数
receive_char:
here1
btjf UART2_SR,#5,here1
ld a,UART2_DR
ret
程序二:接收采用中断,发送采用查询
intel
;初始化PB,推挽输出,用于数码管段驱动;
mov UART2_CR1,#0
mov UART2_CR2,#0
mov UART2_CR3,#0
mov UART2_BRR2,#0
mov UART2_BRR1,#0dh ;设置波特率为9600
mov UART2_CR2,#2ch
rim
loop:
jra loop
send_char:
here
btjf UART2_SR,#7,here
ld UART2_DR,a
ret
UART2_Recv_ISR.l
ld a,UART2_DR
call send_char
iret
interrupt NonHandledInterrupt
NonHandledInterrupt.l
iret
motorola
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+UART2_Recv_ISR} ; 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
3、注意事项:
1)线路是否连接正确。

2)编程时要注意选择相符的CPU型号
四、实验总结(结果):
在串口调试助手里,在发送区写入要发送的信息,比如“gdut”,选择手动发送,按下发送键,在接收区可以看到“gdut”。