标题:
有没有大神会把c语言转成汇编语言
[打印本页]
作者:
zcgh6633
时间:
2015-7-5 20:39
标题:
有没有大神会把c语言转成汇编语言
/***************************头文件***********************/
#include <reg51.h>
/************************数据类型宏定义******************/
#define uchar unsigned char
#define uint unsigned int
#define lcd P0 //液晶数据口
/***********************声明控制引脚*********************/
sbit rs=P3^0; //LCD1602控制端口
sbit en=P3^1;
sbit jh=P3^2; // 继电器控制端
sbit k1=P1^0; //按键
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
/**************************数组定义********************/
uchar code table0[]="Modle: Automatic"; //用于LCD1602显示
uchar code table1[]="T1=12min T2=20s ";
uchar table2[]="Automatic";
uchar table3[]="Manual ";
uchar table4[]="00";
uchar table5[]="00";
uchar table6[]=" ";
/**********************s声明全局变量*******************/
uchar _50ms,t1=15,t2=30; //每50ms加一次的变量 ;间隔时间min;浇花时间s ;
uint s,T_s; //1s时间到;总定时时间
uchar flag=0,flag1=0,flag2=0,flag3=0;//时间切换标志。自动/手动切换标志,时间间隔和浇花时间调节标志 ,浇花与不浇花标志
/*************************延时程序*********************/
void delay(uint count) //1ms延时
{
uint i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
/*************************液晶驱动程序*************************/
void w_cmd(uchar com) //lcd1602写命令
{
rs=0;
lcd=com;
en=1;
delay(5);
en=0;
}
void w_data(uchar dat) //lcd1602读数据
{
rs=1;
lcd=dat;
en=1;
delay(5);
en=0;
}
void w_str(uchar *s) //lcd1602写字符串
{
while(*s) w_data(*s++);
}
void lcd_int() //lcd1602初始化
{
en=0;
w_cmd(0x38);
w_cmd(0x0c);
w_cmd(0x06);
w_cmd(0x01);
w_cmd(0x80+0x00);
w_str(table0);
w_cmd(0xc0+0x00);
w_str(table1);
}
/*******************定时器0初始化程序******************/
void Timer0_Init(void) //其中没ET0是为以后控制暂停用的
{
TMOD = TMOD | 0X01; //定时方式1
TH0 = 0X3C; //50ms
TL0 = 0XB0;
TR0 = 1;
ET0=1;
_50ms = 0;
s = 0;
}
/*******************定时器0中断程序********************/
void Timer0(void) interrupt 1
{
TR0 = 0; //停止计数
TH0 = 0X3C; //重装定时器值
TL0 = 0XB0;
TR0 = 1;
_50ms++;
if(_50ms == 20) //1s到
{
_50ms = 0;
s++;
// count++;
if(!flag) //间隔时间内
{
if(s == T_s) //时间间隔到
{
s=0;
flag=1;
jh=0;//开始浇花
}
}
if(flag) //浇花时间内
{
if(s==t2)
{
s=0;
flag=0;
flag3=0;
jh=1; //停止浇花
}
}
}
}
/******************判断模式选择***********************/
void judge()
{
if(k1==0) //判断模式
{
delay(10);
if(k1==0)
{
while(!k1);
flag1=~flag1;
}
}
}
/*****************调节时间****************************/
void tiaojie()
{
table4[0]=t1/10+48;
table4[1]=t1%10+48;
table5[0]=t2/10+48;
table5[1]=t2%10+48;
w_cmd(0xc0+0x03);
w_str(table4);
w_cmd(0xc0+0x0c);
w_str(table5); //液晶显示
if(k2==0) //判别调节间隔时间还是浇花时间
{
delay(10);
if(k2==0)
{
while(!k2);
flag2=~flag2;
}
}
if(flag2==0) //调节间隔时间
{
if(k3==0)
{
delay(10);
if(k3==0)
{
while(!k3);
t1++;
if(t1>150) t1=150;
}
}
if(k4==0)
{
delay(10);
if(k4==0)
{
while(!k4);
t1--;
if(t1<12) t1=12;
}
}
}
if(flag2) //调节浇花时间
{
if(k3==0)
{
delay(10);
if(k3==0)
{
while(!k3);
t2++;
if(t2>120) t2=120;
}
}
if(k4==0)
{
delay(10);
if(k4==0)
{
while(!k4);
t2--;
if(t2<20) t2=20;
}
}
}
}
/*******************主函数**********************************/
void main()
{
lcd_int();
Timer0_Init();
while(1)
{
judge(); //判断模式
if(!flag1) //自动模式
{
w_cmd(0x80+0x07);
w_str(table2); //液晶显示
tiaojie(); //调节时间
T_s=t1*60;//自动模式间隔时间,默认12分钟
EA=1; //开定时器
}
if(flag1) //手动模式
{
w_cmd(0x80+0x07);
w_str(table3); //液晶显示
if(k5==0) //判定是否按下浇水开关
{
delay(10);
if(k5==0)
{
while(!k5);
flag3=~flag3;
}
}
if(flag3==0) //不浇花
{
jh=1;
EA=0;//关定时器
}
if(flag3) //浇花
{
jh=0; //开继电器
// count=0; //浇花计时
EA=1; //开定时器
flag=1; //浇花标志
t2=50; //浇花不超过50s
}
}
}
}
作者:
admin
时间:
2015-7-5 23:39
先生成hex文件 然后反汇编即可
作者:
尘嚣下的逃亡
时间:
2015-7-6 12:39
反汇编
作者:
荆棘鸟lzc
时间:
2015-7-6 19:24
有难度
作者:
zcgh6633
时间:
2015-7-6 21:29
admin 发表于 2015-7-5 23:39
先生成hex文件 然后反汇编即可
hex文件生成了 然后怎么进行反汇编呢
作者:
jnutian
时间:
2015-7-6 22:10
我也想问
作者:
liaolinhui
时间:
2015-7-7 00:06
keil进入调试之后可以看到相应的汇编代码
作者:
admin
时间:
2015-7-7 00:18
zcgh6633 发表于 2015-7-6 21:29
hex文件生成了 然后怎么进行反汇编呢
这里下载 单片机反汇编软件:
http://www.51hei.com/mcudown/
作者:
zhanghanli007
时间:
2015-7-13 16:10
反汇编
作者:
liudeyi
时间:
2015-7-13 23:49
楼上说的没错,先生成hex文件,然后反汇编
作者:
liuzhaoxin1020
时间:
2016-12-17 12:16
生成hex。然后反汇编,结果不一定准确
作者:
zl2168
时间:
2016-12-17 13:33
keil能将c变成汇编
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1