您现在的位置: 主页 > MCU > 单片机应用 > 单片机同一IO口输出两组数组 -
本文所属标签:
为本文创立个标签吧:

单片机同一IO口输出两组数组 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]
单片机同一IO口输出两组数组基于80C51,因为没有多余的口可用,只能用同一IO口输出两组数组,高4位一组输出0~9,低4位一组输出0~15!试试看: MOV R0, #s1 ;数组一的指针 MOV R1, #s2 ;数组二的指针 LC

单片机同一IO口输出两组数组
基于80C51,因为没有多余的口可用,只能用同一IO口输出两组数组,高4位一组输出0~9,低4位一组输出0~15!

试试看:

本文引用地址: http://www.21ic.com/app/mcu/201806/764392.htm

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);
}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 单片机同一IO口输出两组数组 -
 

"单片机同一IO口输出两组数组 -"的相关文章

网站地图

围观()