东方华威汽车电子技术论坛 汽车电子技术论坛 |汽车电子技术论坛|汽车电子论坛|汽车技术论坛|汽车维修技术论坛|汽车维修论坛|汽车检测仪器|汽车解码器|里程表调校设备|防盗钥匙匹配设备|气囊电脑修  防盗匹配  气囊数据恢复  音响解码   电脑板维修  电脑解码

 找回密码
 立即注册
查看: 1864|回复: 3

汇编与C语言的结合

[复制链接]
发表于 2019-3-14 22:17:22 | 显示全部楼层 |阅读模式
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0x3f,0x06,0x5b,0x4f,
               0x66,0x6d,0x7d,0x07,
               0x7f,0x6f,0x77,0x7c,
               0x39,0x5e,0x79,0x71};
void yanshi(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void xianshi(uchar n )
{
P0=~tab[n];
}
void saomiao()
{
uchar anjian ,shu;//定义 键盘横纵线和显示数的名称

//-----------------------------------------------------
P3=0xfe;
anjian=P3;
anjian=anjian & 0xf0;
if(anjian !=0x0f)
{
yanshi(10);
anjian=P3;
anjian=anjian & 0xf0;
if(anjian != 0xf0)//判断按键有没有按下,按下则执行下面对比程序否则跳出执行
{
anjian=P3;
switch(anjian)//按键值与数据对比校验得数给显示
{
case 0xee:  shu=3;//按键值相等 显示数为0
            break;//返回
case 0xde:  shu=2;//按键值相等 显示数为0
            break;//返回
case 0xbe:  shu=1;//按键值相等 显示数为0
            break;//返回
case 0x7e:  shu=0;//按键值相等 显示数为0
            break;//返回
}
while(anjian !=0xf0)
{
anjian=P3;
anjian=anjian & 0xf0;
}
xianshi(shu);
}
}

//-----------------------------------------------------
P3=0xfd;
anjian=P3;
anjian=anjian & 0xf0;
if(anjian != 0xf0)//比较横是否等于0xf0,相等执行{}里面语句,不等跳出
{

yanshi(10);
anjian=P3;
anjian=anjian & 0xf0;
if(anjian != 0xf0)
{
anjian=P3;
switch (anjian)
{
case 0xed: shu=7;
           break;
case 0xdd: shu=6;
           break;
case 0xbd: shu=5;
           break;
case 0x7d: shu=4;
           break;
}
while(anjian !=0xf0)
{
anjian=P3;
anjian=anjian & 0xf0;
}
xianshi(shu);
}
}

//----------------------------------------------------------------

P3=0xfb;
anjian=P3;
anjian=anjian & 0xf0;
if(anjian !=0xf0)//比较横是否等于0xf0,相等执行{}里面语句,不等跳出
{

yanshi(10);
anjian=P3;
anjian=anjian & 0xf0;
if(anjian !=0xf0)
{
anjian=P3;
switch(anjian)
{
case 0xeb: shu=11;
           break;
case 0xdb: shu=10;
           break;
case 0xbb: shu=9;
           break;
case 0x7b: shu=8;
           break;

}
while(anjian !=0xf0)
{
anjian=P3;
anjian=anjian & 0xf0;
}
xianshi(shu);
}
}

P3=0xf7;
anjian=P3;
anjian=anjian & 0xf0;
if(anjian != 0xf0)//比较横是否等于0xf0,相等执行{}里面语句,不等跳出
{

yanshi(10);
anjian=P3;
anjian=anjian&0xf0;
if(anjian!=0xf0)
{
anjian=P3;
switch(anjian)
{
case 0xe7: shu=15;
           break;
case 0xd7: shu=14;
           break;
case 0xb7: shu=13;
           break;
case 0x77: shu=12;
           break;

}
while(anjian != 0xf0)
{
anjian=P3;
anjian=anjian & 0xf0;
}
xianshi(shu);
}
}
}
//-----------------------------------
void main()
{
P2=0xff;
while(1)
{
saomiao();
}
}

QQ图片20190314221534.jpg
回复

使用道具 举报

发表于 2019-5-24 07:25:47 | 显示全部楼层
来看下,学习一下
回复 支持 反对

使用道具 举报

发表于 2019-11-28 13:26:44 | 显示全部楼层
学学
回复

使用道具 举报

发表于 2020-3-23 19:27:49 | 显示全部楼层

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|东方华威汽车电子 ( 吉ICP备15003515号-1

GMT+8, 2020-6-2 02:24 , Processed in 0.372737 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表