标题: 有没有大神可以帮我把c程序改成汇编的呢 [打印本页]
作者: 陈陈 时间: 2018-6-24 14:10
标题: 有没有大神可以帮我把c程序改成汇编的呢
#include <reg52.h>
Code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管 0-9
code unsigned char tab1[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF} ;//共阴数码管0-9带小数点
sbit key1 = P1^0; //开始、暂停
sbit key2 = P1^1; //记数
sbit key3 = P1^2; //上翻
sbit key4 = P1^3; //下翻
sbit key5 = P1^4; //清零
static unsigned char ms,sec;
static unsigned char Sec[8],Ms[8];
static int i ,j;
void delay(unsigned int cnt) //延时程序
{
while(--cnt);
}
void main()
{
unsigned char key3_flag=0,key4_flag=0;
TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时
TH0=0xd8;
TL0=0xf0;
ET0=1;
TR0=0;
TMOD |=0x10; //定时器1用于动态扫描
TH1=0xF8;
TL1=0xf0;
ET1=1;
TR1=1;
EA =1;
sec=0; //初始化
ms=0;
P1=0xff;
i=0;
j=0;
start:
while(1)
{ //开始、暂停
if(!key1) //判断是否按下
{
delay(50); //去抖
if(!key1)
while(!key1) //等待按键释放
{;}
TR0=!TR0;
}
//记录
if(!key2) //判断是否按下
{
delay(50); //去抖
if(!key2)
{ while(!key2) //等待按键释放
{;}
if(i==8) //8组数据记录完毕
{TR0=0; goto start;}
Sec= sec; //将数据存入数组
Ms= ms;
i++;
}
}
//上翻
if(!key3)
{
delay(50);
if(!key3)
{ while(!key3)
{;}
TR0=0;
key3_flag=1; //按键3标志
if(j==i)
goto start;
else
if(key4_flag)
j+=2;
key4_flag=0;
sec=Sec[j];ms=Ms[j]; //显示数组里的内容
j++;
}
}
//下翻
if(!key4)
{
delay(50);
if(!key4)
{
while(!key4)
{;}
TR0=0;
key4_flag=1; //按键4标志
if(j<0)
goto start;
else
if(key3_flag)
j-=2;
key3_flag=0;
sec=Sec[j];ms=Ms[j]; //显示数组里的内容
j--;
}
}
//清零
if(!key5)
{
delay(50);
if(!key5)
while(!key5)
{;}
TR0=0;
ms=0;
sec=0;
for(i=0;i<8;i++)
{
Sec=0;Ms=0;
}
i=0;
}
}
}
/********************************/
/* 定时中断1 */
/********************************/
void time1_isr(void) interrupt 3 using 0//定时器1用来动态扫描
{
static unsigned char num;
TH1=0xF8;//重入初值
TL1=0xf0;
switch(num)
{
case 0: P2=0xfe;P0=tab[sec/10];break;//显示秒十位
case 1: P2=0xfd;P0=tab1[sec%10];break; //显示秒个位
case 2: P2=0xfb;P0=tab[ms/10];break;//显示十位
case 3: P2=0xf7;P0=tab[ms%10];break; //显示个位
default:break;
}
num++;
if(num==4)
num=0;
}
/********************************/
/* 定时中断0 */
/********************************/
void tim(void) interrupt 1 using 1
{
TH0=0xd8;//重新赋值
TL0=0xf0;
ms++;//毫秒单元加1
if(ms==100)
{
ms=0;//等于100时归零
sec++;//秒加1
if(sec==60)
{
sec=0;//秒等于60时归零
}
}
}
作者: angmall 时间: 2018-6-24 14:10
可用keil C51把C语言转成汇编
1. C文件上点右键,点“Option for ...”,然后勾选右侧的“Generate Assembler SRC File”,就会生成对应文件名扩展名为.SRC的汇编文件了。
2. 在调试界面点那个放大镜图标,或者菜单中点“View”然后点“Disassembly Windows”,就可用看到汇编代码了,这时按F10/F11单步执行的是每一句对应的汇编语句,而不是C语句。
3. 点击工具栏上一个红色的"D",进入调试状态,再把鼠标点到c代码处,右键查看汇编代码,就可以看到所以c编译后的汇编代码了。
作者: 86269 时间: 2018-6-24 14:46
没有你可以百度以下修改
作者: 陈陈 时间: 2018-6-24 17:05
我这个是中文版的keil 看不懂英语。。 能换成中文在说一下吗
作者: yzwzfyz 时间: 2018-6-25 23:04
C的编译程序,本身就必须将C转成汇编,而后再转成机器码。
所以你可以在程序编译后,生成的文件中找一下,会找到的。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |