找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1454|回复: 4
打印 上一主题 下一主题
收起左侧

有没有大神可以帮我把c程序改成汇编的呢

[复制链接]
跳转到指定楼层
楼主
ID:357412 发表于 2018-6-24 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
15黑币
#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时归零
}
}
}


最佳答案

查看完整内容

可用keil C51把C语言转成汇编 1. C文件上点右键,点“Option for ...”,然后勾选右侧的“Generate Assembler SRC File”,就会生成对应文件名扩展名为.SRC的汇编文件了。 2. 在调试界面点那个放大镜图标,或者菜单中点“View”然后点“Disassembly Windows”,就可用看到汇编代码了,这时按F10/F11单步执行的是每一句对应的汇编语句,而不是C语句。 3. 点击工具栏上一个红色的"D",进入调试状态,再把鼠标点到c代码处, ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 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编译后的汇编代码了。
回复

使用道具 举报

板凳
ID:357785 发表于 2018-6-24 14:46 | 只看该作者
没有你可以百度以下修改
回复

使用道具 举报

地板
ID:357412 发表于 2018-6-24 17:05 | 只看该作者
angmall 发表于 2018-6-24 15:20
可用keil C51把C语言转成汇编

1. C文件上点右键,点“Option for ...”,然后勾选右侧的“Generate Asse ...

我这个是中文版的keil  看不懂英语。。  能换成中文在说一下吗
回复

使用道具 举报

5#
ID:123289 发表于 2018-6-25 23:04 | 只看该作者
C的编译程序,本身就必须将C转成汇编,而后再转成机器码。
所以你可以在程序编译后,生成的文件中找一下,会找到的。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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