单片机应用程序的高级语言设计

单片机应用程序的高级语言设计


2024年4月29日发(作者:)

维普资讯

20Q2年第1期 仪表技术 一9一 

单片机应用程序的高级语言设计 

陆永耕 

(中国矿业大学,江苏撩州22100 ̄) 

摘要:介绍利矾Fmaklin C高级语言蝙写单片机用户应用程序的特点,对汇蝙语言难以处理的数据分析、运算和显示等方面, 

它具有较好的处理效果。 

关羹词:单片机;高级语言;程序;数据处理 

The Application 1)es ̄n of High Level Language to the Single-chip Processor 

LU Yong-geng 

(1he University 0f Mi, ̄g and clⅡd唧,XI 0I-221008,C]ifna) 

Abs岫:This paperdiscussed 衄lni advantage 0fthe Franklin C highlevel J8I| 舻,esp郫 yinthe 0o曙她0fthe enaly'ne, ̄gIcu— 

latin and j曲 . 

Key Or出:single-chip 0ce秘叮#highlevellmagmge; 阳n】mer;data plocess. 

1系统硬件结构 

和运行情况在屏幕上同时显示出来,支持汇编语言、 

PIAI语言、c语言源程序的运行调试,也可同时相互交 

5l系列单片机应用系统.由以下部分组成:模数/ 

叉使用,有极高的开发效率。 

数模转换芯片AD0809/DAC0832,并行输入输出信号缓 程序有以下子程序组成:系统初始化Init

sys()、 

冲74Is 5、锁存74HC573、驱动光电隔离的8255A,键 主程序Main()、键盘输入ReadKey()与显示DisDP()、 

盘输入KEY及数码管显示LED 8279,以及作为R 

采样AD与数字量输出DAC、时钟定时TimeaO()、看门 

232串行通讯接口的MAx232。同时,为防止死机现 

狗复位WATCHI3OG()、串行发送Tx—char()与接收R工 

象,设置了看门狗电路wlyr(看门狗将定时对系统实 

char()等。下面分别对其进行介绍。 

现自动复位)。单片机用8031/89c51/8751系列,它有 

2.1系统初始化 

64K EPR0M程序储存单元和32K RAM数据存储器,能 

完成数码管显示、串行口、时钟、键盘的初始化。 

满足一般应用要求。单片机应用系统组成如图l所 

8279初始化为8*8字符显示.右端输入.编码扫描键 

示。 

盘,fv键轮回方式。要显示的数据经I)isSeg[]编码处 

A,n#整 

理后放在disp [8]单元,进行显示。单片机串行.El设 

定为传输模式1,每次发送接收10个旒位,包括一个 

看门囊 + 苴 

起始位和一个结束位。时钟中断程序产生20ms的定 

R^M}_+ 片 

时,以便定时采样或者数码显示的更新。 

; 帆 

vo hilt

— 

()} 

ped妇h 

羹量-^ ◆ 

XBYTE[ PⅫ]=0xDl; 

((xⅡYTE【s F ])1==1); 

图1单片机应用系统组成 

xBYTE[s ]=0x00; 

为了能够满足掉电情况下长期工作的要求,硬件 

xBYTE[ 4PⅢ]=0x2A; 

各部分选择低功耗的元器件。 

for"( 0; (s;i++){di卵1 [ II Di娼es_]:I 

sCoff=0x501 

2系统软件设计 

TMOD= 0眦 /*~-T/ClOD=Oxl1…一*/ 

TH1= .皿: 

采用Franklin C高级语言编写用户程序.在仿真器 

I(TCON 6); 

Explorer/G6E上编译调试通过;ICExplorer仿真系统具 

Selblt(scoN 1);l 

有编辑、汇编、编译等集成调试功能,是一种高性能的 2.2键盘输入数码管显示接口 

单片机开发工具.用于仿真4-16位单片机,所有命令 

8279的命令状态口地址和数据口地址分别为 

收稿日期:2∞1一lO 

作者镯介:陆永瓣(1963一),男,江苏徐州人,博士,讲师,主要从事工业自动化及数字图像处理的研究。 

维普资讯

10一 仪表技术 2002年第l期 

StaPoa、DataPort;显示缓冲区RAM位于外部中;8279初 

为1时,表示10个串行位发送完毕.可以发送下一个 

始化为8*8字符显示,右端输入,编码扫描键盘,Ⅳ键 

字符了;发送完后,应将SCON.1位清零,为下一步发 

轮回方式。待检测到键按下后,返回键值.主程序调用 送作准备。同样道理,执行接收功能时.当SCON.0位 

该子程序,读取键值并转向相应的键值处理服务程序。 

变成1时.表示一串完整的数据进入SIIUF中,可以接 

要显示的数据在变量disp中,经oi ̄seg[]编码处理后 

收,并将SCON.0位清零。 

放入display[]单元,显示程序将display[]中的数值在 

/f…… 一一*/ 

数码管上显示出来。 

'rx

dⅢ( edd c){ 

/*一一 旺7 …一*/ 

则e(1) 

lg—d dw R 10-()} 

if【Scc &0 ==0北)beeak; 

if(ⅫⅥE[s ]&0 7)I 

d l(SCON 1): 

Ⅺ蛐[s lj=0枷; 

印UF=c;l 

r时um(XBn'E[n PⅢt]+1);l 

dRx

dw()} 

∞tO);l 

则e(1) 

voidIXOP()l 

(s00 80lol==O曲1)b础; 

ck (SCO ̄.O); 

un 妇i,j; 

for('_O;i《8;i++){di自p [i]=Diss [d %10];d p/=IO;}I 

retura SBUF;} 

2.3 AD/DAC接口 

主程序流程如下所示:首先进行各个外设接V1的 

程序中定义了两个存储变量单元,分别指向接口 

初始化,然后,进入采样处理显示程序,由时钟中断程 

单元地址ADc和外部单元地址 首先启动AD. 

序完成显示扫描更新及采样处理;在对各外设接口单 

CON转换.待检测到转换完成信号ADcoN.0位变为1 

元处理时,要加入看门狗复位子程序,防止出现死循 

时.读取转换结果并存贮到外部单元。输出数据时.直 

环。 

接向DAC地址输出结果即可。每次第i通道的采样 

/*…-M ()…一*/ 

# e<Rm51 h’ 

结果存储在变量temp中,累加放入wei ̄t[i],不同通 

# wh_de<sr1)lO.h 

道的转换结果存入不同的weight[i]。 

# wh_de《/dlSACC h> 

/ …一^D.…一*/ 

/* 定殳善个外设接口地址:t/ 

voidAⅨ瑶09()l 

舳=啦盯盯;^DC= _删;ADc0N= fI l;St ̄ort=0:cFII ̄B; 

un d i,j; 

nlL日P嘣=0)mA;IIVPott/oIIrPc ̄t=0 90: 

for(i-0;i《3;i++)I 

/ 一……一*/ 

(j=o;j<4“++)I 

dⅢcode 目s []=/ P即ts be d y。I*/ 

XBYrE[^Dc+ ;0∞D; 

}Cx3f,IN06,(NSb,0x4f ̄0 ,0 .0x7d.0x07.IN7f,0耐l 

t,chi[ ̄((XBn'E[ADCON])^。==0); 

IlII8igr c}I ,k ,w; 

I唧=ⅫWE[^Dc+Ij; 

m cIIIIsi ed }Ⅲdi ; 

[i]+=te ̄p;}I} 

呻 im i由 I 印.出甲,We l[8]; 

2.4时钟运行及看门狗复位程序 

/*一…-*/ 

单片机的时钟频率为11.0592NI ̄.用时钟中断子 

删 ()l 

程序产生2 的定时,dick记录中断次数,产生秒信 

un gr i.J; 

click=0∞0;∞c=姗;d =0∞0; 

号sec,每20ms更新标志,在显示程序中复位该标志。 

n10D= Il;1H0=0'船;ⅡD=0 5;1啦=1;m=1;EA=1 

看门狗定时要大于系统运行周期的两倍.否则影响系 

Init

— 

(); 

统的正常运行。 

e(1)1 

/*~一 _珀 O一.WATCH1)I ̄…一/ 

w=R翩dK (); 

1iJ () 1 u 2I 

key w 

TH0=0 E;1I.D=IN75: 

AD栅(); 

dick++: 

= 

【0]; 

if(diO ̄)5O){ 

();l} 

see++i 

if(∞c>59)l =ol; 

参考文献: 

eliak=0;{ 

[1]徐爱钧.彭秀华.单片机高级语言C51应用程序设计[M] 

dWAII21t1) ̄()lXB'I/'I ̄[W1D]=INll;} 

北京;电子工业出版杜,1999. 

2.5串行通讯程序 

[2]陈龙三.8051单片机C语言控制与应用[M].北京:清华大 

单片机设定为传输模式1,每次传送10个串行 

学出版杜.1999. 

位,包括一个起始位和一个结束位。当SCON.1位变 

(许雪军编发) 


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714372504a2434224.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信