找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1990|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

有沒有大神可以幫我把c程序改成匯編的呢

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:357412 發(fā)表于 2018-6-24 14:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
15黑幣
#include <reg52.h>
Code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰數(shù)碼管 0-9
code unsigned char tab1[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF} ;//共陰數(shù)碼管0-9帶小數(shù)點
sbit key1 = P1^0;            //開始、暫停
sbit key2 = P1^1;            //記數(shù)
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用于動態(tài)掃描
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組數(shù)據(jù)記錄完畢
{TR0=0; goto start;}
Sec=    sec;      //將數(shù)據(jù)存入數(shù)組
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];    //顯示數(shù)組里的內(nèi)容
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];          //顯示數(shù)組里的內(nèi)容
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用來動態(tài)掃描
{
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時歸零
}
}
}


最佳答案

查看完整內(nèi)容

可用keil C51把C語言轉(zhuǎn)成匯編 1. C文件上點右鍵,點“Option for ...”,然后勾選右側(cè)的“Generate Assembler SRC File”,就會生成對應(yīng)文件名擴展名為.SRC的匯編文件了。 2. 在調(diào)試界面點那個放大鏡圖標,或者菜單中點“View”然后點“Disassembly Windows”,就可用看到匯編代碼了,這時按F10/F11單步執(zhí)行的是每一句對應(yīng)的匯編語句,而不是C語句。 3. 點擊工具欄上一個紅色的"D",進入調(diào)試狀態(tài),再把鼠標點到c代碼處, ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2018-6-24 14:10 | 只看該作者
可用keil C51把C語言轉(zhuǎn)成匯編

1. C文件上點右鍵,點“Option for ...”,然后勾選右側(cè)的“Generate Assembler SRC File”,就會生成對應(yīng)文件名擴展名為.SRC的匯編文件了。

2. 在調(diào)試界面點那個放大鏡圖標,或者菜單中點“View”然后點“Disassembly Windows”,就可用看到匯編代碼了,這時按F10/F11單步執(zhí)行的是每一句對應(yīng)的匯編語句,而不是C語句。

3. 點擊工具欄上一個紅色的"D",進入調(diào)試狀態(tài),再把鼠標點到c代碼處,右鍵查看匯編代碼,就可以看到所以c編譯后的匯編代碼了。
回復(fù)

使用道具 舉報

板凳
ID:357785 發(fā)表于 2018-6-24 14:46 | 只看該作者
沒有你可以百度以下修改
回復(fù)

使用道具 舉報

地板
ID:357412 發(fā)表于 2018-6-24 17:05 | 只看該作者
angmall 發(fā)表于 2018-6-24 15:20
可用keil C51把C語言轉(zhuǎn)成匯編

1. C文件上點右鍵,點“Option for ...”,然后勾選右側(cè)的“Generate Asse ...

我這個是中文版的keil  看不懂英語。。  能換成中文在說一下嗎
回復(fù)

使用道具 舉報

5#
ID:123289 發(fā)表于 2018-6-25 23:04 | 只看該作者
C的編譯程序,本身就必須將C轉(zhuǎn)成匯編,而后再轉(zhuǎn)成機器碼。
所以你可以在程序編譯后,生成的文件中找一下,會找到的。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表