考试的时候千万不要着急,一步一步来,不到最后一刻千万不要放弃,加油,你也一定可以的!

目录

  • 中断3个程序
    • 第一个程序
    • 第二个程序
    • 第三个程序
  • DA转换
    • Triangle
    • Triangle2
    • 矩形波
  • 显示/键盘:
    • 数码管的动态显示(C语言实现):
    • 矩阵键盘(C语言实现)
  • 加法、乘法
    • 第二个例程
    • 例程
    • 例程

中断3个程序

第一个程序

     ORG 0000H
RESET:  AJMP MAINORG 000BHAJMP IT0P
MAIN:   MOV SP, #60H;MOV TMOD, #01;ACALL PT0M0;
HRER:   AJMP HERE
PT0M0:  MOV  TL0, #0CHMOV TH0, #0FEHSETB ET0;SETB EA;SETB TR0;RET
IT0P:   MOV  TL0, #0CHMOV TH0, #0FEHCPL P1.0;RETI;

第二个程序

     ORG 0000H
RESET:  AJMP MAINORG 000BHAJMP IT0PORG 0100H
MAIN:   MOV SP, #60HMOV B, 0AHACALL PT0M0
HERE:   AJMP HERE
PT0M0:  MOV TMOD, #01HMOV TL0, #MOV TH0, #SETB ET0SETB EASETB TR0RET
IT0P:   MOV TL0,# MOV TH0,# JNZ B, LOOP
RTURN:  RETI

第三个程序

     ORG 0000H
RESET:  AJMP MAINORG 000BHAJMP IT0PORG 001BHAJMP IT1PORG 1000H
MAIN:   MOV SP, #60HACALL PT0M2
LOOP:   MOV C, F0JNC LOOP
HERE:   AJMP HERE
PT0M0:  MOV TMOD, #25HMOV TL0, #FFHMOV TH0, #FFHSETB ET0MOV TL1, #06HMOV TH1, #06HCLR F0SETB EASETB TR0RET
IT0P:   CLR TR0SETB F0RETI
IT1P:   CPL P1.0RETI

DA转换

Triangle

     ORG 0100H
START:  MOV R0, #0FEHMOV A, #00H
LOOP:   MOVX @R0, AINC AJNZ LOOP

Triangle2

     ORG 0100H
START:  MOV R0, #0FEHMOV A, #00H
UP:     MOVX @R0, AINC AJNZ UP
DOWN:   DEC AMOVX @R0, AJNZ DOWNAJMP UP

矩形波

     ORG 0100H
START:  MOV R0, #0FEHMOV A, #data1MOVX @R0, AACALL DELAY1 MOV A, #data2MOVX @R0, AACALL DELAY2

显示/键盘:

数码管的动态显示(C语言实现):

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int#define DigW P1 //设置P1口为位选口(选择第几位的)
#define DigD P2 //P2为段选,(选择数码管的哪段亮起来的)
uchar show[] = {5, 2, 0, 1, 3, 1, 4};
uchar DigT[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};  //共阴极数码管0~9,a-f段码表
/**************************延时函数*************************/void delay() {uint j;for (j = 0; j < 150; j++);
}/**************************主函数*************************/
void main(void) {Dig_W = 0x00;//关数码管Dig_D = 0x00;while (1) {uchar temp = 0x80;for (uchar i = 0; i < 7; i++) {Dig_W = tmep;Dig_D = DigT[show[i]+1];delay();temp = temp >> 1;}}
}

矩阵键盘(C语言实现)

#include <reg51.h>#define uchar unsigned char
#define uint unsigned int#define Dig_W  P1
#define Dig_D  P2
#define io_KEY    P3uchar key_T[] = {0xee, 0xde, 0xbe, 0x7e,0xed, 0xdd, 0xbd, 0x7d,0xeb, 0xdb, 0xbb, 0x7b,0xe7, 0xd7, 0xb7, 0x77};     //按键值uchar dis_T[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};  //共阴极数码管0~9,a-f段码表
uchar zhi = 0;
/**************************延时函数*************************/
void d_ms()
{   uint j;for(j=0;j<150;j++);
}
/**************************显示函数*************************/
void display(uchar num) {uchar i, temp;temp = 0x80;Dig_W = temp;Dig_D = dis_T[num];temp = temp >> 1;
}uint Scanner() {int 列 = 0, 行 = 0, 按键 = 0, a;io_KEY = 0xf0;             //P2口后4位置高电平前4位置低电平,当有按键按下时确定列数while (io_KEY == 0xf0);     //判断P2口是否有信号输入列 = io_KEY;         //保存列数delay();io_KEY = 0x0f;                 //P2口后4位置低电平前4位置高电平,当有按键按下时确定行数while (io_KEY == 0x0f);        //判断P2口是否有信号输入行 = io_KEY;         //保存行数按键 = 列 | 行;return 按键;
}/**************************主函数*************************/
void main(void) {uint KeyV = 0;Dig_W = 0x00;//关数码管Dig_D = 0x00;while (1) {KeyV = Scanner(); //得到按键值for (int i = 0; i < 16; i++)//判断按键值{if (key_T[i] == KeyV) {zhi = i;break;}}display(zhi);}
} 

加法、乘法

    MOV R0,#60HMOV R2,#10HCLR A
TU: MOV @R0,AINC R0INC ADJNZ R2,TUMOV R0, #60HMOV R1, #70HMOV R2, #10H
TT: MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,TTRETEND

第二个例程

     MOV 70H, #12HMOV 71H, #90HMOV 72H, #78HMOV 60H, #56HMOV 61H, #34HMOV 62H, #12HMOV R0,#70HMOV R1,#60HMOV R2,#03HCLR CY
LOOP:MOV A,@R0ADDC A,@R1DA AMOV @R1,AINC  R0INC  R1DJNZ R3,LOOPEND

例程

         MOV 30H,#45H
LOOP:   MOV A,30HSWAP AANL A,#0FHMOV 31H,AMOV A,30HANL A,#0FHMOV 32H,AENDMOV 32H,#98HMOV 31H,#76HMOV 30H,#54HMOV R2,#04H
LOOP:   CLR CYMOV A,30HRLC AMOV 30H,AMOV A,31HRLC AMOV 31H,AMOV A,32HRLC AMOV 32H,ADJNZ R2,LOOPRETEND

例程

     ORG 0000H
START:  MOV R0,#60HMOV DPTR,#QW1MOV R5,#0MOV R7,#10H
LOOP:   MOV A,R5MOVC A,@A+DPTRMOV @R0,AINC R0INC R5DJNZ R7,LOOPLJMP QW2QW1: DB 60H,61H,62H,63H,64H,65H,66H,67HDB 68H,69H,6AH,6BH,6CH,6DH,6EH,6FHQW2:MOV R0,#60HMOV R1,#70HMOV R5,#0FH

【51单片机】考试例程|汇编实现相关推荐

  1. 51单片机仿真例程-开关控制

    通过读取针脚电平高低来实现控制,51单片机的针脚没有stm32的状态多和复杂. 代码: #include<reg51.h>#include<reg51.h> sbit x=P3 ...

  2. 51单片机仿真例程-led点阵屏

    用51单片机驱动led点阵屏 #include <reg51.h> unsigned char hang[10]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0 ...

  3. 51单片机考试内容补充

    一.选择题(每题1分,共10分) 1. 对程序计数器 PC 的操作(  ). A)是自动进行的           B)是通过传送进行的 C)是通过加1指令进行的    D)是通过减1指令进行的 2. ...

  4. 51单片机 c语言 汇编,51单片机之时钟(C语言和汇编两种方式实现)

    1.C语言实现 #include typedef  unsigned char   uint8; typedef  unsigned int    uint16; typedef  unsigned ...

  5. 51单片机仿真例程-PWM直流电动机

    通过单片机输出PWM波,控制占空比实现控制电动机的转速,方向,启停. 代码: #include<reg51.h> #include<intrins.h> #define uin ...

  6. 51单片机仿真例程-蜂鸣器

    通过单片机定时器输出方波,不同的频率声调不同. #include<reg52.h> sbit beep = P1^5;unsigned char code music_h[]={0xfc, ...

  7. 51单片机仿真例程-双机串行通信

    计算机与外界通信进行信息交换成为通信.通信的方式分为串行通信和并行通信. 并行通信是指数据同时进行传送,串行通信是指数据一位一位地依次传输,两种通信方式各有优缺点. #include<reg51 ...

  8. 51单片机汇编学习例程(9)——ADC0809篇

    ASM9_ADC0808:    ADC0808采集ADC参数,数码管显示 (注意代码显示不全,最下面有Keil源码和Proteus工程) /** ************************** ...

  9. 51单片机开发系列一-51单片机开发环境搭建以及入门汇编代码

    51单片机开发系列一 51单片机开发环境搭建以及入门汇编代码 象棋小子    1048272975 1. 51单片机概述 51单片机是对所有兼容Intel 8031指令系统的单片机的统称.目前教科书基 ...

最新文章

  1. LVS 配置Iptables防火墙及故障解决
  2. 页面残留数据该如何处理
  3. 惊呆!不用一张图片,却训出个图像识别SOTA?
  4. CXF 调用C#.net的WebService
  5. python pil_python PIL 图像处理
  6. 启迪公交上云助力北京公交二维码乘车业务系统顺利上线
  7. SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例
  8. 如何应对互联网和物联网化带来的工业安全新风险?
  9. android - 房源登记模版
  10. 面向对象与面向过程编程的区别
  11. Linux 服务器安装、配置和维护,一文看全~
  12. 转:用迅雷下载Android SDK全系列
  13. NVIDIA JETSON NANO三个版本核心的对比
  14. 综述 | 语义分割经典网络及轻量化模型盘点
  15. 通过后台数据在百度地图标记多个点
  16. Spark教程——(10)Spark SQL读取Phoenix数据本地执行计算
  17. vim只读模式修改文件
  18. 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题
  19. mysql 映射到map null_mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象...
  20. svn - 冲突及解决方案

热门文章

  1. 破解ESX主机ROOT帐户密码。
  2. 快进来看王冰冰!青年大学习提醒系统来了!!
  3. U²-Net:铅笔肖像画的生成
  4. 咖啡汪日志—— 回退兜底 及实用的服务降级策略
  5. mysql如何修改root用户的密码
  6. Geometry点线面的初始化
  7. 【DSP】CCS3.3安装教程
  8. Jave虚拟机划分的三个代: 年轻代、年老代和持久代
  9. 概率论01-样本空间,随机事件
  10. 从宗教信仰看东西方文化对人的影响