单片机学习过程中常见问题分析(附常见品牌介绍)
C51语句:P0=1;
P0声明为sfr,因此编译成:mov80h,01h,将把0x01数据送入0x80单元,由于0x80单元物理上对应P0端口,因此,P0.0脚将输出高电平(其实是呈现高阻态,P0口独有的),其他.1-.7脚输出低电平。
C51语句:P0_0=1;
P0_0声明为sbit,因此编译成:setb80h,这将把位地址空间的0x80地址的bit的值置1。这个位正是P0口的bit0,执行后,P0.0将输出高阻态。而P0.1-.7不会变化。
5:C51为什么要嵌套汇编
51单片机一个显著优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合ISO7816协议的cpu卡的读写,对时序要求比较严格。其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就带来几个问题:如何声明函数、参数如何传递等。限于篇幅,不能说得很细。下面举例:
汇编程序单独保存一个文件,加入到工程中,函数如下:
_proc_a:
mova,r7
inca
movr7,a
ret
用c语言在.h文件中声明:externunsignedcharproc_a(unsignedcharval);
调用时形如:retvalue=proc_a(0x11);
说明:
a:汇编程序如果带参数,则需要在汇编程序前多加一个下划线。而声明它的地方不用加(伟福编译器这么要求的)。
b:函数的形参中第一参数用R7传递,函数返回值用R7返回,这是C51的通用规范。其他参数都有相应规定。函数可以返回一个位,用psw的c位返回。
c:上面的语句,执行顺序是把0x11给R7,然后跳转子程序,子程序将它加1后送回。
d:函数跳转到汇编程序时,本区的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考虑调用后是否要恢复这些常规资源。上例中,A的值被函数使用了,编程者不必恢复调用前的值。
6:51单片机的P0口特殊之处
许多新手都碰到这个问题,其实很简单,这涉及到芯片的io脚是怎么做出来的。这对硬件工程师来说十分重要。TTL的io脚模型:
P1,P2,P3口都可以理解成左图,注意vcc下面有个电阻,因此可以理解成:引脚输出1的能力弱。地那边没有电阻,可以理解成引脚吸入电流能力强。而P0口,可以理解成右图。这就是集电极开路输出,也叫OC输出。可以看出,当CTR=1时,三极管导通,引脚被接地;当ctr=0时,三极管截止,引脚浮空,也叫三态。这个端口这么做的目的是考虑P0口肩负读写数据和地址复用,这个关系要仔细看懂cpu时序图。因此,P0口要加合适的上拉电阻,绝不要加下拉电阻。上拉电阻的选择要看外部负载情况。
图片新闻
最新活动更多
-
10月30日立即预约>> 宾采尔激光焊接领域一站式应用方案在线研讨会
-
10月31日立即下载>> 【限时免费下载】TE暖通空调系统高效可靠的组件解决方案
-
11月19日立即报名>> 【线下论坛】华邦电子与恩智浦联合技术论坛
-
即日-11.30免费预约申请>>> 燧石技术-红外热成像系列产品试用活动
-
11月30日立即试用>> 【有奖试用】爱德克IDEC-九大王牌安全产品
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
推荐专题
- 1 格力联手优傲!协作机器人领域风云将起?
- 2 “深化德国技术精髓,深耕中国市场”——上海国际嵌入式展暨大会论文征集启动
- 3 同源共创 模式革新 | 华天软件皇冠CAD(CrownCAD)2025新品发布会圆满举行
- 4 阿普奇:工业聚能新质领航,智启工业自动化新时代
- 5 “视”界革新,智驭未来 —— VisionChina2024(深圳)机器视觉展完美谢幕
- 6 回顾 | OFweek 2024智能制造与半导体、印刷包装融合创新大会圆满落幕!
- 7 揭秘!红外热像仪为何能“捕捉”气体泄漏?
- 8 CAXA CAD 2025新品发布!赋能研发效率,创新设计体验
- 9 现场直击 | 维科网带你逛 VisionChina2024(深圳),领略机器视觉盛宴!
- 10 双十一狂欢优惠!创想三维K2 Plus Combo,多色旗舰新机抢先购!
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论