STC8H8K系列汇编和C51实战

您所在的位置:网站首页 双向跑马灯程序用开关控制 STC8H8K系列汇编和C51实战

STC8H8K系列汇编和C51实战

2024-07-14 19:35| 来源: 网络整理| 查看: 265

STC8H8K系列汇编和C51实战——实现跑马灯(汇编版) 一、实验名称:二、实验目的三、实验内容四、代码五、思考题总结系列文章——STC8H8K系列汇编51实战

一、实验名称:

汇编语言实现跑马灯

二、实验目的 学习Keil μVision4集成开发环境的使用;读STC实验箱原理图,了解其组成与工作原理,学习掌握STC下载工具的使用方法;读懂例程,学习单片机51汇编编程初步知识、软件延时程序的编写和点亮LED的方法。 三、实验内容

在Keil μVision2集成开发环境下分别 用51汇编语言编程实现跑马灯,即控制与实验箱上的P6.0~P6.7引脚相连的8个LED循环点亮(如图),请用参考代码的方法、查表法和循环指令三种方法来实现跑马灯并在实验箱上验证。 在这里插入图片描述

四、代码 Fosc_KHZ EQU 24000 ;24000KHZ STACK_POIRTER EQU 0D0H ;堆栈开始地址 ;******************************************************************* ;******************************************************************* P4 DATA 0C0H P5 DATA 0C8H P6 DATA 0E8H P7 DATA 0F8H P0M1 DATA 0x93 ; P0M1.n,P0M0.n =00--->Standard, 01--->push-pull P0M0 DATA 0x94 ; =10--->pure input, 11--->open drain P1M1 DATA 0x91 ; P1M1.n,P1M0.n =00--->Standard, 01--->push-pull P1M0 DATA 0x92 ; =10--->pure input, 11--->open drain P2M1 DATA 0x95 ; P2M1.n,P2M0.n =00--->Standard, 01--->push-pull P2M0 DATA 0x96 ; =10--->pure input, 11--->open drain P3M1 DATA 0xB1 ; P3M1.n,P3M0.n =00--->Standard, 01--->push-pull P3M0 DATA 0xB2 ; =10--->pure input, 11--->open drain P4M1 DATA 0xB3 ; P4M1.n,P4M0.n =00--->Standard, 01--->push-pull P4M0 DATA 0xB4 ; =10--->pure input, 11--->open drain P5M1 DATA 0xC9 ; P5M1.n,P5M0.n =00--->Standard, 01--->push-pull P5M0 DATA 0xCA ; =10--->pure input, 11--->open drain P6M1 DATA 0xCB ; P6M1.n,P6M0.n =00--->Standard, 01--->push-pull P6M0 DATA 0xCC ; =10--->pure input, 11--->open drain P7M1 DATA 0xE1 ; P7M0 DATA 0xE2 ; ;******************************************************************* ORG 0000H LJMP MAIN ORG 0100H MAIN:; ;端口初始化 MOV P0M1, #0 ;设置P0为准双向口 MOV P0M0, #0 MOV P1M1, #0 ;设置P1为准双向口 MOV P1M0, #0 MOV P2M1, #0 ;设置P2为准双向口 MOV P2M0, #0 MOV P3M1, #0 MOV P3M0, #0 MOV P4M1, #0 MOV P4M0, #0 MOV P5M1, #0 MOV P5M0, #0 MOV P6M1, #0 MOV P6M0, #0 MOV P7M1, #0 MOV P7M0, #0 MOV P6, #0FFH ;变量初始化 CLR A ; 清空A CLR P4^0; 流水灯总开关打开 CLR P0^0; 打开矩阵键盘第一列 SETB P0^4; P0^4置1 LOOP: ;相当于while(1) JUDGE: JB P0^4, CONTINUE;P0^4为1时跳到CONTINUE MOV R3, #01H;记录P0^4是否按下过,只要按下过就一直执行,直到按下其他键 DJNZ R3, CONTINUE;当R3不为1时,跳到CONTINUE START: MOV A, #0FEH;给P6富初值0x1111 1110 Output: MOV P6, A RL A ;每次把A左移循环 LCALL DELAY;使用延时函数 LJMP Output SJMP JUDGE CONTINUE: SJMP LOOP DELAY:;三重循环 MOV R0, #20 MOV R1, #0 MOV R2, #0 DELAY1: DJNZ R2, DELAY1 DJNZ R1, DELAY1 DJNZ R0, DELAY1 RET END 五、思考题

1、软件延时的原理是什么?能否将例程中延时函数调用改为delay(300)?参数类型定义与实际延时时间有关吗? 软件延时的原理是重复的执行无意义指令,执行次数越多延迟时间自然也就越长。 不能改为300,在定义时用的u8,也就是unsigned char型,只有8位,最多可定义255,若想改为300则需要改为u16,也就是unsigned int型。

2、对照实验一的C51和实验二汇编语言方法,对两种语言在头文件、赋值语句、循环语句、函数声明、调用子程序方法各方面的不同做出归纳总结。 C51的头文件在最开始,汇编的头文件在最末尾,二者均可自己定义。 C51赋值可以直接使用“=”号,而汇编用MOV赋值 C51循环可用while 和for循环,汇编使用CJNE等判断指令,多次跳转实现循环 C51函数在主函数之后时需要声明,汇编不需要声明函数

3、如果增加一个开关(譬如实验箱上SW17,与P3.2相接,如图2所示),用来控制流水灯流动的方向,请用汇编编程实现开关控制流水灯方向的跑马灯。

总结

主页还有多篇STC8H8K和其他语言的学文章,以及原理图和实验报告等多种资源,以后写完的东西也会立马发布的,欢迎各位观看,万分感谢!

系列文章——STC8H8K系列汇编51实战

基于ESP8266与STC单片机的天气时钟(包括DS18B20、TFT、串口、外部中断、ESP8266、STC、API等)

STC8H8K系列汇编和C51实战——实现跑马灯(51版)

STC8H8K系列汇编和C51实战——实现跑马灯(汇编版)

STC8H8K系列汇编和C51实战——实现键控不同方式数码管动态显示(C51版与汇编版)

STC8H8K系列汇编和C51实战——开关控制定时器秒表(C51版)

STC8H8K系列汇编和C51实战——开关控制定时器秒表(汇编版)

STC8H8K系列汇编和C51实战——双中断控制定时器流水灯

STC8H8K系列汇编和C51实战——双中断加减计数器

STC8H8K系列汇编和C51实战——简易频率计

STC8H8K系列汇编和C51实战——秒倒计时器(汇编版)

STC8H8K系列汇编和C51实战——秒倒计时器(51版)

STC8H8K系列汇编和C51实战——秒倒计时器(可自行设定初值)(51版)

STC8H8K系列汇编和C51实战——按键允许按键计数(51版)

STC8H8K系列汇编和C51实战——按键允许按键计数(汇编版)

STC8H8K系列汇编和C51实战——按键允许按键计数(定时器去抖动51版)

STC8H8K系列汇编和C51实战——按键允许按键计数(利用下降沿中断控制)

STC8H8K系列汇编和C51实战——计算机串口控制单片机LED

STC8H8K系列汇编和C51实战——串口发送菜单界面选择不同功能

STC8H8K系列汇编和C51实战——数码管显示ADC、串口显示ADC按键与数值



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3