历史上的今天
今天是:2025年05月08日(星期四)
2018年05月08日 | 单片机同一IO口输出两组数组
2018-05-08 来源:eefocus
单片机同一IO口输出两组数组
基于80C51,因为没有多余的口可用,只能用同一IO口输出两组数组,高4位一组输出0~9,低4位一组输出0~15!
试试看:
MOV R0, #s1 ;数组一的指针
MOV R1, #s2 ;数组二的指针
LCALL _HEBY_OUT ;调用子程序,合并输出
......
;---------------------
_HEBY_OUT:
MOV A, @R0 ;取数组一的元素
ANL A, #0FH
SWAP A ;放到高四位
MOV R0, A
MOV A, @R1 ;取数组二的元素
ANL A, #0FH
ADD A, R0 ;合并
MOV P1, A ;输出
RET
最佳答案:
“做而论道”同学正解。
用C来做更简单, 子程序就一句话, 而且更加灵活, 想取数组那位直接给编号即可。
#include
#define dat_out P0
unsigned char str1[]={1, 2, 3, 5, 6, 7......};//数值不要超过15即可
unsigned char str2[]={15, 8, 6, 12, 3, 6, 4.....};
/***********************
str0:数组1 str1:数组2
n1:取数组1中的某位数
n2:取数组2中的某位数
************************/
void exp(unsigned char *str1, unsigned char *str2, unsigned char n1,unsigned char n2)
{
dat_out = ((str1[n1] << 4) & 0xf0) | (str2[n2] & 0x0f);
}
void main(void)
{
exp(str1, str2, 1, 3); //P0口高4位输出str1数组的第1个元素"2"
// 低4位输出str2数组的第3个元素"12"
//P0 = 0x2C
while(1);
}
上一篇:汇编语言的16位除法子程序
史海拾趣
|
处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的程序员模型。尽管每个处理器 性能不同,所面向的应用不同,每个处理器的实现都要遵循这一体系结构。ARM体系结构为嵌入系统发展 商提供很高的系统性能,同时保持优异的功耗和 面 ...… 查看全部问答> |
|
各位看官,小弟现在最大的梦想就是用VB.NET控制我板子上(友善之臂MINI2400)上的那个LED灯,搞来搞去都没成功,请哪位大哥大姐行行好给个源码,只要点下按钮让灯亮就行,拜谢了… 查看全部问答> |
|
11. 基于ARM7 、9、11处理器设计的产品,类似Intel的Xscale架构产品的设计方案 (功能特点、结构、作用 举例子说明设计方案,如GPS、游戏机、POS……) 12. 嵌入式系统实时性? ...… 查看全部问答> |
|
我的cisco2600路由器被人把IOS删掉了,我要从另一个2600路由器下载IOS,怎么下呢??高分求助! 我用的是COPY FLASH TFTP命令 ,但是总是报错:TFTP://10.1.1.3 timeout 10.1.1.3是我设置的本机IP。 怎么解决呢》?求高手指教啊 … 查看全部问答> |
|
Google开发者日活动 和Google的工程师、业界同行们交流利用Google的各种开发工具去构建您的社区应用、移动应用、地图应用,或者基于 AJAXJavaScript的网络应用。 2008年6月12日,北京 北京亚运村北京国际会议中心 报名地址:httpcode.google.co ...… 查看全部问答> |




