由于蓝桥杯51的板子使用的是8051单片机,而Keil5是一款IDE软件,并不是一种编程语言,因此需要使用汇编语言来编写电子表程序。

以下是一个简单的电子表程序,可以显示秒分时,按键可以加减秒分时任意一个,有个按键可以复位。

ORG 0H
MOV P0, #0FFH     ; 设置P0口为输出状态
MOV P2, #0FFH     ; 设置P2口为输入状态
MOV TMOD, #01H    ; 设置定时器0为16位定时器
MOV TH0, #0       ; 设置定时器0初始值为0
MOV TL0, #0       ; 设置定时器0初始值为0
SETB TR0          ; 启动定时器0
MOV A, #0         ; 初始化计时器变量
MOV B, #0
MOV C, #0

LOOP:
  MOV A, TH0      ; 获取定时器0的高8位
  MOV B, TL0      ; 获取定时器0的低8位
  MOV C, #0       ; 清空C寄存器
  DIV AB, #10000  ; 将计时器的值除以10000,得到时钟数
  MOV P0, A       ; 将时钟数输出到P0口
  MOV A, B        ; 将计时器的值赋给A寄存器
  DIV AB, #600    ; 将计时器的值除以600,得到分钟数
  MOV P0, A       ; 将分钟数输出到P0口
  MOV A, B        ; 将计时器的值赋给A寄存器
  DIV AB, #10     ; 将计时器的值除以10,得到秒数
  MOV P0, A       ; 将秒数输出到P0口

  JB P2.0, ADD_S   ; 检测P2.0是否被按下,如果按下则跳转到ADD_S标签
  JB P2.1, ADD_M   ; 检测P2.1是否被按下,如果按下则跳转到ADD_M标签
  JB P2.2, ADD_H   ; 检测P2.2是否被按下,如果按下则跳转到ADD_H标签
  JB P2.3, RESET   ; 检测P2.3是否被按下,如果按下则跳转到RESET标签
  JMP LOOP         ; 如果没有任何按键被按下,则继续循环

ADD_S:
  INC B            ; 将秒数加1
  CJNE B, #60, SKIP_S  ; 如果秒数不等于60,则跳转到SKIP_S标签
  MOV B, #0        ; 如果秒数等于60,则将秒数清零
SKIP_S:
  MOV A, #0        ; 将A寄存器清零
  MOV TH0, A       ; 将A寄存器赋值给定时器0的高8位
  MOV TL0, B       ; 将B寄存器赋值给定时器0的低8位
  JMP LOOP         ; 跳转回循环

ADD_M:
  INC C            ; 将分钟数加1
  CJNE C, #60, SKIP_M  ; 如果分钟数不等于60,则跳转到SKIP_M标签
  MOV C, #0        ; 如果分钟数等于60,则将分钟数清零
  JMP ADD_S        ; 跳转到ADD_S标签

SKIP_M:
  MOV A, #0        ; 将A寄存器清零
  MOV B, #0        ; 将B寄存器清零
  MOV TH0, A       ; 将A寄存器赋值给定时器0的高8位
  MOV TL0, B       ; 将B寄存器赋值给定时器0的低8位
  INC AB           ; 将计时器的值加1
  JMP LOOP         ; 跳转回循环

ADD_H:
  INC A            ; 将时钟数加1
  CJNE A, #24, SKIP_H  ; 如果时钟数不等于24,则跳转到SKIP_H标签
  MOV A, #0        ; 如果时钟数等于24,则将时钟数清零
SKIP_H:
  MOV B, #0        ; 将B寄存器清零
  MOV C, #0        ; 将C寄存器清零
  MOV TH0, B       ; 将B寄存器赋值给定时器0的高8位
  MOV TL0, C       ; 将C寄存器赋值给定时器0的低8位
  JMP LOOP         ; 跳转回循环

RESET:
  MOV A, #0        ; 将A寄存器清零
  MOV B, #0        ; 将B寄存器清零
  MOV C, #0        ; 将C寄存器清零
  MOV TH0, B       ; 将B寄存器赋值给定时器0的高8位
  MOV TL0, C       ; 将C寄存器赋值给定时器0的低8位
  JMP LOOP         ; 跳转回循环

END
``
用蓝桥杯51的板子编写一个c语言电子表其中功能有:显示秒分时按键可以加减秒分时任意一个有个按键可以复位。用的软件是Keil5

原文地址: https://www.cveoy.top/t/topic/hjDw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录