串口调试助手上输入数据0-9,然后再数码管显示(汇编语言版本)

本文介绍了一个基于单片机的程序设计案例,通过串口接收0-9的数字并将其显示在数码管上。程序包括串口初始化、中断服务程序及数码管驱动等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//实验目的:串口调试助手上输入数据0-9,然后再数码管显示
org 00H
ljmp start

org 23H //中断入口地址
ljmp uart_interrupt 

org 30H
start:  
       
    mov P0,#0xff//设置初始值
    mov dptr,#numb
    lcall en
    lcall UART_init
       here: sjmp here  //好比是一个while(1)循环


;首先3/8译码器使能 并且选中第一个数码管用于显示
en:
    clr   P1.4
 setb  P1.3
 clr   P1.0
 clr   P1.1
 clr   P1.2
ret

//uart初始化
UART_init:

   mov TMOD,#0x20  //0010 0000   说明在定时器1的工作方式2下工作
   mov  TH1,#0xFD
   mov  TL1,#0xFD
   setb TR1  //定时器1运行控制位=1,说明开始计时
   mov SCON,#0x50 //0101 0000   前两位说明在串口工作方式1  第三位SM2在方式1设置为0  第四位REN=1允许串口接收
   setb EA
   setb ES
   setb ET1
 ret

 

 

//中断服务程序
uart_interrupt:

   send:
     mov A,#0x02
  anl A,SCON 
     cjne A,#2, receive
  clr TI
  setb REN
  
   receive:
     mov A,#0x01
  anl A,SCON 
     cjne A,#1,quit
  clr RI
  mov R4,SBUF
  mov R3,SBUF
  mov A,R4
  subb A,#0x30
  movc A,@A+dptr
  mov P0,A
  addc A,#0x30
  mov SBUF,R3
  clr REN
   quit:
  reti
           
//0-9

numb:
     DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
end  

 


 

编写和调试汇编语言程序,完成以下任务: 1、采用列扫描方式扫描 4×4 键盘(0~9、A~F 键),将当前按键的行值、列值和键 值存储于指定的存储单元(寄存器或变量)。在列扫描程序中应添加延时去抖动程序。 2、将键值对应按键的键名(0~9,A~F)在指定的一位数码管上“单位显示”。 3、在 6 位数码管上“移位显示”,从右至左依次将按下的按键键名同时显示在数 管上,即当前按下的按键键名显示在最后(右)一位数码管上,先按下的往左移一位 显示。 4、指定 0~9、A~F 键中一个按键作为切换键,用于切换“单位显示”与“移位显 示”,按下该键可自动切换两种显示方式,同时将该键的键名按切换后的显示方式显示。 5、将按键名通过串口传输方式发送到电脑串口调试助手显示,切换键换行显示。 6、测试和记录数据(注意理解行值、列值、键值的含义)要求在实验系统上,将键盘及数码管模块的地址输入口 KEY/LED CS 连至总线地址 CS0 ~CS7中指定的某一个端口。 2、采用列扫描方式编写汇编语言或 C51 语言键盘列扫描程序,通过单步运行方式, 读取、记录和验证各个按键的行值、列值和键值。 3、键盘扫描程序采用延时去抖程序进行去抖动,观察和分析去抖效果。 4、输入、编译、调试、运行程序,测试数据,记录结果。
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值