vc中内嵌汇编实现pc机与单片机的并行通信图文.docx
- 文档编号:15356285
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:10
- 大小:20.48KB
vc中内嵌汇编实现pc机与单片机的并行通信图文.docx
《vc中内嵌汇编实现pc机与单片机的并行通信图文.docx》由会员分享,可在线阅读,更多相关《vc中内嵌汇编实现pc机与单片机的并行通信图文.docx(10页珍藏版)》请在冰点文库上搜索。
vc中内嵌汇编实现pc机与单片机的并行通信图文
第24卷第4期2005年12月
中南民族大学学报(自然科学版
JournalofSouth—CentralUniversityforNationallties(Nat,Sci.Edition
V01.24No.4Dee.2005
VC++中内嵌汇编实现PC机与单片机的并行通信田晓梅王月姣
(中南民族大学电子信息工程学院,武汉430074
摘要介绍了在VC++6.0中内嵌汇编语言的一些技巧,针对PC机与单片机并行通信的硬件电路,给出了内嵌汇编语言以及通信程序的实现方法.
关键词VC++6.0语言;内嵌汇编语言;MCS-51单片机;并行通信
中图分类号TP368文献标识码A文章编号1672—4321(200504—0058—03
ImplementParallelCommunicationbetweenPersonalComputerandSCMEmbeddedAssemblyLanguageonVC++6.0
TianXiaomeiWangYuefiao
AbstractThetechniqueofusingembeddedassemblylanguageonVC++6.0isintroduced.AimingatthehardwarecircuitofparallelcommunicationwithinpersonalcomputerandSCM,embeddedassemblylanguageandcommunicationprogrambetweenpersonalcomputerwithMCSareprovided.
KeywordsVC++6.0language;embeddedassemblylanguage;MCS一51SCM;parallelcommunication
TianXiaomeiLect.CollegeofElectronicsandInformationEngineering,SCUFN,Wuhan430074,ChinaWindows环境下,VC++以其强大的功能被广
泛应用于各个领域.尽管它相对于其它的高级语言已经有了很高的代码效率,但是如果要直接访问内存、寄存器、标准的I/0端口等,C++库函数和WindowsAPI函数要由编译程序经过一系列转换后才能完成这些操作,速度要比汇编慢几倍甚至几十倍,对一些实时性要求很高的场合难以满足要求[1’2].另外,在一些工控应用中,根据不同的需要,PC机需要扩展一些复杂电路,对这些非标准的I/O接口,C++库函数及WindowsAPI有时无法支持.如果能将汇编语言嵌入到VC++中,这样不仅能充分发挥汇编执行速度快、占内存少、能直接访问任何硬件电路等特点,满足很多复杂的实际工程的需要,而且保留了VC++6.0面向对象、可视化等Windows程序风格和VC++语言对数据强大的处理能力,可实现二种语言优势互补,设计出理想的应用程序[3].1VC++中内嵌汇编的基本技巧
VC++中内嵌汇编通过关键词“asm”将MASM汇编语句加入到VC++程序中,嵌入的汇编代码由VC++6.0中在线汇编编译器统一完成,不需要单独编译,使用相当方便.
在VC++程序中嵌入汇编有两种方式,都要用到关键词“asm”.一种是VC++代码行中以“asnl汇编语句”的单行代码形式嵌入;另一种是以“asm{..…・}”代码块形式嵌入,如表1所示.
两种形式中前者在C++代码中可任意插入一行汇编代码,显得灵活、方便;后者更适合用于大段汇编语言的插入,显得简洁明了,结构清晰.二者在功能上完全相同.以下针对一开发的应用实例来讨论如何用内嵌汇编实现对硬件资源的控制与访问.
收稿151期2005—04—05
作者简介田晓梅(1970一,女,讲师,研究方向:
计算机应用,E—mail:
xmt01@yahoo.corn.ca 万方数据
第4期田晓梅,等:
VC++中内嵌汇编实现Pc机与单片机的并行通信
表l嵌入汇编语言的两种方式
汇编语言的单行嵌入汇编语言的块嵌入VC++代码行asm汇编语句1asIll汇编语句2
asm汇编语句nVC++代码行
VC++代码行
aSm
{汇编语句1
汇编语句n
VC十+代码行
2
单片机与PC机打印口并行通信的
实现
2.1硬件接口电路
单片机与PC机以往常采用COM口进行串行
通信.实际上也可作并行通信.图1是已应用于某控制系统中的并行通信接口电路.用一片8255作为单
片机与PC并行口(D型插座的接口.其中8255的
PA口为方式1输入,PB口为方式1输出.由于并行
D型插座引脚的限制,PB口的数据通过741。
S157分两次将一个字节传送给PC机.
89S51
8255
D型插座
Po口2
DO
2D7而J1厂nl
PC3
而l几
A口
P“
pBIs/护Bl
IPB5
PCIPC2
lB
读379
PC机
图1单片机与PC机并行通信接13电路图
2.2单片机与PC机的通信
2.2.1
单片机的输入时序
PC机向单片机传送数据的时序如图2所示.其
过程是:
PC机先将下传的数据通过写378H寄存器锁存并到达PA口;然后发STB信号表PA口的数据有效,STB的上升沿向单片机89S51发出INTR中断信号;当89S51在外部中断0的服务程序中完成数据读入CPU,在RD信号的下降沿使INTR信号变低,等待下次数据的传送.
2.2单片机的输出时序
写378数——、,-~
至8255口——。
\—————————————一
STBA——弋.厂———————一
INTRA厂—、.
RD—————弋.厂——一
89C5
l数据口二二二二二<二二二二
图2
PC机向单片机传数的时序
单片机向PC机传送数据的时序如图3所示.其
过程是:
单片机89S51先通过写操作(多个字节,第一个在主程序中写,其它在外部中断1的服务程序
中写将数送8255PB口;WR信号的上升沿使OBF
有效,通知CPU读取PB口的数据;当PC机通过二次操作74LSl57的A/B,读取PB口的数后,发出
ACK回答信号,其下降沿使OBF失效,上升沿使
INTR变高,向单片机89S51发出中断申请,通知它可以送新的数据.
wR弋、厂————一
8255
1:
3————、,—————————————————一
数有效———/L————————————一
oB阳———_、./-———一
INTRB————、厂———一
柚—————、厂————一
ACKB——————、厂————一
图3单片机向Pc机传数的时序
2.3通信软件
(1PC机程序.
PC机的通信程序为查询方式,为提高通信程序的实时性与可读性,采用VC++6.0内嵌汇编语言实
现.PC机发、单片机收的程序从略,下面以PC机收、
单片机发为例说明嵌入方法.
void
PCRXmubyte(
//接收子程序
{
unsigned
charPCRXbyte,PCRXI,
PCstatusf;
NE:
一asm{
MOVDX,379H
//取状态
INAL,DX
MOVPCstatusf,AI,
}
PCstatusf=PCstatusf&0x08;
汜陀旧H
p
仳
挖n
M“
M
"一甜鲥
吖w
S一
舭一觚侣M据弘拍M
万方数据
60中南民族大学学报(自然科学版第24卷while(PCstatusf一一1{};
一asm{
MOVDX,37AHMOVAL,OOH0UTDX。
AI。
MOVDX,379HINAL。
DX
//A/B=1
if(PTcount一一n
{EXl—0;
PTcount一0;
//接收高四位3C++内嵌汇编块的几点注意
MOVPCRXbyte,AL
MOVDX,37AH//A/B=0
MOVAL,02H,
OUTDX,AL
MOVDX,379H//接收低四位
INAI。
。
DX
MOVCI。
04H
SHRAI。
CL
MOVPCRXl,AL
PCRXbyte一(PCRXbyte&OxfOlPCRXI;ff形成一字邙
*RX=PCRXbyte;
RX++;
asm(
MOVDX,37AH//产生/ACKMOVAI。
.00H
0UTDX.AI。
MoVAL,01H
OUTDX。
AL
NOP
MOVAI。
。
OOH
OUTDX。
AL
}
RXcount++;
if(RXcount!
一m
gotoNE;
}
(2单片机程序.
单片机89S51的发送为中断方式,采用KeilC51编写.其外部中断1的服务程序如下:
INTl(interrupt1//中断发送
{P8255DB=*PT;
PT++;PTcount++;
C++中嵌入asm{..…・代码段可使用几乎全部MASM的表示表,完全支持Intel处理器的指令集,但要注意以下几点.
(1VC++的在线汇编器和MASM宏汇编并不完全相同,它不支持MASM中的MACRO、REPT、IRC、IRP、ENDM等赛马指令或<>、&、%、TYPE等宏操作符.
(2asm{..…・中不允许使用MASM中的定义指示符,如DB、DW、DD、DQ、DT等以及DUP和THIS等操作符.
(3使用goto可以从C++中跳到asm{..…・}的某标号处;也可从asm模块跳到asm块里面或外面的某标号处.注意:
在asm块内标号是不区分大小写的,而在VC++里面则是区分大小写的.
(4asm{..…・代码段内部的注释语句可使用汇编注释符“;”来标识,也可用C++语言风格的注释符“H……*7”捐“ff”来标识.
4结语
VC++和汇编的优化组合可以满足复杂而精确的实践需要,但在实际的处理过程中,必须针对具体系统的要求与电路图灵活掌握,合理使用,真正实现优势互补,切忌乱用而弄巧成拙.
1-13
[2]
[3]
参考文献
KrucIinsKiDJ.VisuaIC++技术内幕[M].第5版.北京:
清华大学出版社,2001
何立民.MCS一51系列单片机应用系统设计一系统配置与接口技术[M].北京:
北京航空航天大学出版社,1993.200~230
徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:
电子工业出版社,2001.50~80
万方数据
VC++中内嵌汇编实现PC机与单片机的并行通信
作者:
田晓梅,王月姣,TianXiaomei,WangYuejiao
作者单位:
中南民族大学电子,信息工程学院,武汉,430074
刊名:
中南民族大学学报(自然科学版
英文刊名:
JOURNALOFSOUTH-CENTRALUNIVERSITYFORNATIONALITIES(NATURALSCIENCEEDITION年,卷(期:
2005,24(4
引用次数:
0次
参考文献(3条
1.KrucIinsKiDJVisuaIC++技术内幕2001
2.何立民MCS-51系列单片机应用系统设计-系统配置与接口技术1993
3.徐爱钧.彭秀华单片机高级语言C51应用程序设计2001
相似文献(0条
本文链接:
下载时间:
2010年1月10日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 中内嵌 汇编 实现 pc 单片机 并行 通信 图文