4个回答
展开全部
#include<reg52>
#define uchar unsigned char
#define uint unsigned int
sbit K1 = P1^4;
sbit K2 = P1^5;
uchar data K1state;
uchar data K2state;
uint data num,ntmp;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x06f,0x77,0x7c,0x39,0x5e,0x79,0x71} ;
uchar data showIndex,indexTmp;
uchar data W[8];
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);//能使之延时接近1毫秒就成 无需精确
}
void main()
{
K1state = 0xFF;
K2state = 0xFF;
num = 0;
while(1)
{
delay(1);//每毫秒轮询一回
//移位法,延时防抖
K1state = (K1state<<1);
K2state = (K2state<<1);
if(K1) K1state++;
if(K2) K2state++;
//检查开关状态
if(K1state==0x80) num++;
if(K2state==0x80) num--;
for(indexTmp=0,ntmp = num;indexTmp<=7;indexTmp++)
{
W[indexTmp] = num%10;
num /=10;
}
P0 = (0x01<<showIndex);//位选
P2 = table[W[showIndex]];//段选
showIndex++;
if(showIndex>=8)
showIndex=0;
}
}
看了你的全图,修改后了,用Keil uVision 3或4都可以,编译后可以查看对应的汇编代码
程序稍大一点的,不会有人用汇编来给你蘑菇,汇编设计写编码太慢了,开发代价不值得
展开全部
学单片机 先学C语言 学深了 再学汇编 这样更好上手
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sbit k=P1^5;
sbit m=P1^6;
int p=0;
while(1)
{
if(k==0)
p++;
else if(m==0)
p--;
}
sbit m=P1^6;
int p=0;
while(1)
{
if(k==0)
p++;
else if(m==0)
p--;
}
追问
不好意思 我没问清楚 能不能用汇编语言 我不会翻译C语言
追答
你可以混合编程嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询