社区
Delphi
帖子详情
mov()过程的用法————在线等待!!!
wchb
2003-08-19 04:36:42
大家好:
(一):procedure Move(const Source; var Dest; Count: Integer);
以上这个过程的两个参数Source和Dest各是什么类型啊?
(二):move(buffer^,pchar(@rbuf^),bufferlength);这样的用法对吗?
请你们给具体的说明一下好吗?
...全文
31
1
打赏
收藏
mov()过程的用法————在线等待!!!
大家好: (一):procedure Move(const Source; var Dest; Count: Integer); 以上这个过程的两个参数Source和Dest各是什么类型啊? (二):move(buffer^,pchar(@rbuf^),bufferlength);这样的用法对吗? 请你们给具体的说明一下好吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lxpbuaa
2003-08-19
打赏
举报
回复
1、const Source; var Dest定义的是无类型参数,理论上可以传入任意类型的参数,但是具体使用时有些限制。
2、作用是从Source变量处赋值Count字节长度的数据到Dest。如:
var
S: String;
DS: String;
begin
DS := '请你们给具体的说明一下好吗';
SetLength(S, Length(DS));
Move(DS[1], S[1], Length(S));
ShowMessage(DS);
end;
————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
汇编语言课程设计——————电子时钟的设计.doc
西安工业大学课程设计用纸 课程名称:汇编语言程序设计 课程英文名称:PROGRAMMING BY ASSEMBLE LANGUAGE 一.设计目的: 1. 理解掌握定时/计数器和中断的使用方法。 2. 掌握微机常用的输入输出方式及接口技术。 3. 掌握一定的汇编语言知识,培养自己的动手操作能力。 4. 学习程序设计的基本思路和方法。 二.程序内容: 第一部分:定义显示界面。 第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间 数存入内存区。 第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。 第四部分:获取键盘的按键值,以ESC键退出系统返回DOS。 三.程序设计原理: 首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并 将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟 数、秒数存入显示缓冲区,并最终存入一结束字符号'$'。调用DOS字符串显示功能将时 间显示 西安工业大学课程设计用纸 出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显 示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷 新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子 钟了。调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制 调整。在累加的
过程
中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于 60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分 值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转 显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程 序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序。 利用BIOSS设计窗口,选择适当的背景和前景等,使屏幕显示更加完美。程序一旦进入运 行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下ESC键返回 DOS系统。 四.程序流程图如下: DATA SEGMENT ;设置数据段 BUF1 DB 'THE TIME IS NOW: $' BUF5 DB ' @@@@@ ^^^^^^^ @@@@@@ $' BUF6 DB ' &&&&&& ####### &&&&&& $' BUF7 DB ' 00 >o o < 00 $' BUF8 DB ' 00 (::) 00 $' BUF9 DB ' 00 ~~ 00 $' BUF10 DB ' 00 !! 00 $' BUF3 DB 'CLASS:040402206 $' BUF4 DB 'NAME:hu ling wei $' BUF2 DB 10 DB 10 DUP(?) DATA ENDS STACK SEGMENT STACK ;设置堆栈段 DB 100 DUP(?) STACK ENDS CODE SEGMENT ;设置代码段 ASSUME CS:CODE,DS:DATA,SS:STACK CURSOR MACRO ROW,CLM ;设置光标位置
MOV
AH,2
MOV
BH,0
MOV
DH,ROW
MOV
DL,CLM INT 10H ENDM WIN MACRO ROWL,CLML,ROWR,CLMR,COLOR ;设置窗口,位置,颜色
MOV
AH,6
MOV
AL,0
MOV
CH,ROWL
MOV
CL,CLML
MOV
DH,ROWR
MOV
DL,CLMR
MOV
BH,COLOR INT 10H ENDM ASCBCD MACRO REG INC BX INC BX
MOV
REG,[BX]
MOV
CL,4 SHL REG,CL INC BX
MOV
AL,[BX] AND AL,0FH OR REG,AL ENDM BCDASC MACRO REG INC BX INC BX
MOV
AL,REG
MOV
CL,4 SHR AL,CL OR AL,30H
MOV
[BX],AL INC BX
MOV
AL,REG AND AL,0FH OR AL,30H
MOV
[BX],AL ENDM INCBCD MACRO REG,COUNT ;BCD数加1
MOV
AL,REG INC AL DAA
MOV
REG,AL CMP AL,COUNT JNZ DISPY
MOV
REG,0 ENDM STRDSPY MACRO ADRS LEA DX,ADRS
MOV
AH,9 INT 21H ENDM CLOCK PROC FAR START: PUSH DS ;显示字符串
MOV
AX,0 PUSH AX
MOV
AX,DATA MO
单片机课程设计——数码管显示4×4矩阵键盘.doc
《单片机原理及应用课程设计》报告 ——数码管显示4*4矩阵键盘的键盘号设计 专 业: 班 级: 姓 名: 学 号: 2013年1月 1.课程设计目的 1.1巩固和加深对单片机原理和接口技术知识的理解; 1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力; 1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法; 1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法; 1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算 机绘制电路图和流程图。 2.课程设计要求 单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘 中的某一按键按下时,数码管上显示对应的键号。例如,1号键按下时,数码管显示"1" , 14号键按下时,数码管显示"E"等等。 3. 硬件设计 3.1 设计思想 分析本任务的要求,使设计能够完成当4*4矩阵键盘中的某一按键按下时,数码管上 显示对应的键盘号。则本系统主要由以下几大模块构成: 显示模块,共阴极LED数码管; 输入模块,4*4矩阵键盘; 3.2主要元器件介绍 矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键 盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。 这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。 数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示 的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮 度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长 的话,数码管显示时将产生闪烁现象。所以,在调整显示的时间间隔时,即要考虑到显 示时数码管的亮度,又要数码管显示时不产生闪烁现象。 3.3 原理图及功能电路介绍 矩阵键盘电路 数码管电路 4. 软件设计 4.1 设计思想 按键采用线反转法先把列线置成低电平,行线置成输入状态,读行线;再把行线置成 低电平,列线输入状态,读列线。当有键按下时,由两次所读状态即可确定所按键的位 置,不需扫描,键盘响应速度大大加快。 4.2软件流程图 4.3 源程序 org 0000h
mov
p2,#0ffh ljmp main org 0100h main:acall keyscan
mov
a,30h
mov
dptr,#table
mov
c a,@a+dptr
mov
p2,a acall delay sjmp main keyscan:
mov
p3,#0fh
mov
a,p3 anl a,#0fh
mov
b,a
mov
p3,#0f0h
mov
a,p3 anl a,#0f0h orl a,b cjne a,#0ffh,keypro ret keypro:
mov
b,a
mov
dptr,#keyvalue
mov
r3,#0ffh key1:inc r3
mov
a,r3
mov
c a,@a+dptr cjne a,b,key2
mov
a,r3
mov
30h,a ret key2:cjne a,#00h,key1 ret delay:
mov
r0,#20 next1:
mov
r1,#20 next2:
mov
r2,#248 djnz r2,$ djnz r1,next2 djnz r0,next1 ret keyvalue:db 77h,7bh,7dh,7eh db 0b7h,0bbh,0bdh,0beh db 0d7h,0dbh,0ddh,0deh db 0e7h,0ebh,0edh,0eeh db 00h table:db 0c0h,0f9h,0a4h,0b0h db 99h,92h,82h,0f8h db 80h,90h,88h,83h db 0c6h,0a1h,86h,8eh end 5. 调试运行 依次按下开关,八段数码管会对应显示出0—f的16个数字 6. 设计心得体会 经过这次课程设计,我对51单片机有了更高程度的理解。更加明白了做设计是一项很考 验心智的一件事儿,需要时间、精力和耐心。 参考书目: 肖金球. 单片机原理与接口技术.[M].北京:清华大学出版社,2004.12 ----------------------- 单片机课程设计——数码管显示4×4矩阵键盘全文共7页,当前为第1页。 单片机课程设计——数码管显示4×4矩阵键盘全文共7页,当前为第2页。 单片机课程设计——数码管显示4×4矩阵键盘全文共7页,当前为第3页。 开始 初始化 先把列线置成低电平,行线置成输入状态,读行线 再把行线置成低电平,列线输入状态,读列线 有键按下时 按键的位置 结束,返回 结束,返回 单片机课程设计—
单片机-课程设计三人抢答器.doc
三人抢答器模拟实验报告 1. 目的与要求 1. 目的 1. 培养学生综合利用MCS——51单片机的软硬件知识进行程序设计的能力,解决一定实际 问题。 2. 进一步加深对MCS——51单片机的内部结构和程序设计方法的理解。 3. 提高学生建立程序文档,归纳总结的能力。 2. 基本要求 1. 要求用MCS——51单片机知识完成程序的设计。 2. 源代码程序要求必要的注释。 3. 创新要求 在基本要求达到后,可以进行创新设计,更加完善程序功能。 2. 系统总体设计 基于MCS——51单片机的智能抢答器的设计,主要实现以下几种功能: 1. 当主持人按下控制按钮时,抢答开始,蜂鸣器响起,提醒选手可以开始抢答。 2. 从开始抢答起,自动计时5秒抢答时间,在此期间如有选手要回答问题,那么可以按 下自己的抢答开关,若抢到,与之相对应的LED灯亮起。 3. 如在规定抢答时间内,无人抢答问题,那么此题作废,主持人可按键进行下一题抢答 。 3. 硬件系统设计 该抢答器的设计是基于MCS——51单片机的,使用到的硬件主要有8051的P1和P3口,LED灯, 外部中断INT0和定时/计数器0 1.使用的三个开关SW1、SW2、SW3分别代表的是三名选手的控制按键,选用P1口中的P1.0 、P1.1、P1.2标是三名选手。 2.使用的三盏LED灯表示相应的选手的指示灯,亮起即表示该名选手抢得该题。 3.外部中断0与P3.2相连,功能为主持人按键,按下此开关抢答即开始。 4.P3.3与蜂鸣器相连。 4. 程序流程图 5. 程序 ORG 8000H LJMP MAIN ORG 8003H LJMP INT ORG 800BH LJMP TOS MAIN: SETB EA SETB EX0 SETB IT0 ;开中断
MOV
TMOD,#01H ;设置T/C0 WAIT: JB P3.5,STOP ;判别抢答位 JNB P3.4,WAIT SETB TR0 ;开始计时 SETB ET0
MOV
R7, #00H Loop:
MOV
R6, #15H DJNZ R6, $ DJNZ R7, Loop CPL P3.3 ;蜂鸣器响起 JNB P1.3,L1 JNB P1.4,L2 JNB P1.5,L3 LJMP WAIT L1: CPL P1.0 CLR P3.4 CLR ET0 CLR TR0 LJMP WAIT L2: CPL P1.1 CLR P3.4 CLR ET0 CLR TR0 LJMP WAIT L3: CPL P1.2 CLR P3.4 CLR ET0 CLR TR0 LJMP WAIT TOS:
MOV
TL0,#00H
MOV
TH0,#4CH ;T0中断为50ms INC R0
MOV
A,R0 CJNE A,#100,NEXT ;抢答时间设置为50ms
MOV
R0,#00H SETB P3.5 NEXT: RETI STOP: CLR TR0 CLR ET0 SETB P3.6 SETB P1.0 SETB P1.1 SETB P1.2
MOV
R0,#00H LJMP WAIT INT: CPL P3.5 SETB P3.4 RETI END 6. 调试程序的方法 在调试的
过程
中,可采用单步执行的方法调试,在单步执行的
过程
中可穿插使用运行至光 标处,然后加入中断,执行中断任务。 7. 所设计问题的不足和改进方案 由于时间和设备资源限制,本设计内容较为简单,而且功能比较单一,且选手抢答后开 关不能自己复位,需靠选手自行将开关拨回。(后附改进版) 8. 收获体会 通过单片机的设计实习,我还是学到了很多的东西。在平时上课没有注意到的地方或是 还不太明白的知识点,我都通过设计当中自己查相关资料和询问其他同学解决掉了。设 计当中还学到了一些相关的课外知识。设计实习提高了我的思能力,动手能力,还有团 队合作的能力,以上这些都是在课上体会不到而在以后的工作当中相当重要的。 这次单片机的设计实习,我虽然参考了很多的资料,但由于知识有限,经验不足,实 验仪器的限制,再加上时间并不是十分充裕,做的并不是十全十美。虽然程序能够运行 ,但程序没有考虑到所有可能的情况,程序本身也存在一些漏洞。希望王老师能够指教 。 2007-12-30 ----------------------- 单片机-课程设计三人抢答器全文共5页,当前为第1页。 单片机-课程设计三人抢答器全文共5页,当前为第2页。 单片机-课程设计三人抢答器全文共5页,当前为第3页。 单片机-课程设计三人抢答器全文共5页,当前为第4页。 单片机-课程设计三人抢答器全文共5页,当前为第5页。
单片机-课程设计三人抢答器(1).doc
三人抢答器模拟实验报告 1. 目的与要求 1. 目的 1. 培养学生综合利用MCS——51单片机的软硬件知识进行程序设计的能力,解决一定实际 问题。 2. 进一步加深对MCS——51单片机的内部结构和程序设计方法的理解。 3. 提高学生建立程序文档,归纳总结的能力。 2. 基本要求 1. 要求用MCS——51单片机知识完成程序的设计。 2. 源代码程序要求必要的注释。 3. 创新要求 在基本要求达到后,可以进行创新设计,更加完善程序功能。 2. 系统总体设计 基于MCS——51单片机的智能抢答器的设计,主要实现以下几种功能: 1. 当主持人按下控制按钮时,抢答开始,蜂鸣器响起,提醒选手可以开始抢答。 2. 从开始抢答起,自动计时5秒抢答时间,在此期间如有选手要回答问题,那么可以按 下自己的抢答开关,若抢到,与之相对应的LED灯亮起。 3. 如在规定抢答时间内,无人抢答问题,那么此题作废,主持人可按键进行下一题抢答 。 3. 硬件系统设计 该抢答器的设计是基于MCS——51单片机的,使用到的硬件主要有8051的P1和P3口,LED灯, 外部中断INT0和定时/计数器0 1.使用的三个开关SW1、SW2、SW3分别代表的是三名选手的控制按键,选用P1口中的P1.0 、P1.1、P1.2标是三名选手。 2.使用的三盏LED灯表示相应的选手的指示灯,亮起即表示该名选手抢得该题。 3.外部中断0与P3.2相连,功能为主持人按键,按下此开关抢答即开始。 4.P3.3与蜂鸣器相连。 4. 程序流程图 5. 程序 ORG 8000H LJMP MAIN ORG 8003H LJMP INT ORG 800BH LJMP TOS MAIN: SETB EA SETB EX0 SETB IT0 ;开中断
MOV
TMOD,#01H ;设置T/C0 WAIT: JB P3.5,STOP ;判别抢答位 JNB P3.4,WAIT SETB TR0 ;开始计时 SETB ET0
MOV
R7, #00H Loop:
MOV
R6, #15H DJNZ R6, $ DJNZ R7, Loop CPL P3.3 ;蜂鸣器响起 JNB P1.3,L1 JNB P1.4,L2 JNB P1.5,L3 LJMP WAIT L1: CPL P1.0 CLR P3.4 CLR ET0 CLR TR0 LJMP WAIT L2: CPL P1.1 CLR P3.4 CLR ET0 CLR TR0 LJMP WAIT L3: CPL P1.2 CLR P3.4 CLR ET0 CLR TR0 LJMP WAIT TOS:
MOV
TL0,#00H
MOV
TH0,#4CH ;T0中断为50ms INC R0
MOV
A,R0 CJNE A,#100,NEXT ;抢答时间设置为50ms
MOV
R0,#00H SETB P3.5 NEXT: RETI STOP: CLR TR0 CLR ET0 SETB P3.6 SETB P1.0 SETB P1.1 SETB P1.2
MOV
R0,#00H LJMP WAIT INT: CPL P3.5 SETB P3.4 RETI END 6. 调试程序的方法 在调试的
过程
中,可采用单步执行的方法调试,在单步执行的
过程
中可穿插使用运行至光 标处,然后加入中断,执行中断任务。 7. 所设计问题的不足和改进方案 由于时间和设备资源限制,本设计内容较为简单,而且功能比较单一,且选手抢答后开 关不能自己复位,需靠选手自行将开关拨回。(后附改进版) 8. 收获体会 通过单片机的设计实习,我还是学到了很多的东西。在平时上课没有注意到的地方或是 还不太明白的知识点,我都通过设计当中自己查相关资料和询问其他同学解决掉了。设 计当中还学到了一些相关的课外知识。设计实习提高了我的思能力,动手能力,还有团 队合作的能力,以上这些都是在课上体会不到而在以后的工作当中相当重要的。 这次单片机的设计实习,我虽然参考了很多的资料,但由于知识有限,经验不足,实 验仪器的限制,再加上时间并不是十分充裕,做的并不是十全十美。虽然程序能够运行 ,但程序没有考虑到所有可能的情况,程序本身也存在一些漏洞。希望王老师能够指教 。 2007-12-30 ----------------------- 单片机-课程设计三人抢答器(1)全文共5页,当前为第1页。 单片机-课程设计三人抢答器(1)全文共5页,当前为第2页。 单片机-课程设计三人抢答器(1)全文共5页,当前为第3页。 单片机-课程设计三人抢答器(1)全文共5页,当前为第4页。 单片机-课程设计三人抢答器(1)全文共5页,当前为第5页。
ADC809的运用及电路
ADC809的运用及电路很全面 ADC0809引脚图与接口电路 A/D转换器芯片ADC0809简介 8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100μs左右。 图9.8 《ADC0809引脚图》 1. ADC0809的内部结构 ADC0809的内部逻辑结构图如图9-7所示。 图9.7 《ADC0809内部逻辑结构》 图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。 表9-1 通道选择表 2.信号引脚 ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图9.8。 对ADC0809主要信号引脚的功能说明如下: IN7~IN0——模拟量输入通道 ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。 START——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST. A、B、C——地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与通道对应关系见表9-1。 CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号 EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。 D7~D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高 OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。 Vcc—— +5V电源。 Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V). 9.2.2 MCS-51单片机与ADC0809的接口 ADC0809与MCS-51单片机的连接如图9.10所示。 电路连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。 1. 8路模拟通道选择 图9.10 ADC0809与MCS-51的连接 如图9.11所示模拟通道选择信号A、B、C分别接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址锁存允许信号ALE由P2.0控制,则8路模拟通道的地址为0FEF8H~0FEFFH.此外,通道地址选择以 作写选通信号,这一部分电路连接如图9.12所示。 图9.11 ADC0809的部分信号连接 图9.12 信号的时间配合 从图中可以看到,把ALE信号与START信号接在一起了,这样连接使得在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。图9.19是有关信号的时间配合示意图。 启动A/D转换只需要一条
MOV
X指令。在此之前,要将P2.0清零并将最低三位与所选择的通道好像对应的口地址送入数据指针DPTR中。例如要选择IN0通道时,可采用如下两条指令,即可启动A/D转换:
MOV
DPTR , #FE00H ;送入0809的口地址
MOV
X @DPTR , A ;启动A/D转换(IN0) 注意:此处的A与A/D转换无关,可为任意值。 2. 转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。 (1)定时传送方式 对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2)查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以
Delphi
5,388
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章