大神帮我把这段C代码转换成汇编语言。
朋友正好有这个作业,奈何我不懂C和汇编语言。请各位帮帮忙,最好写上注解,功能要一样,我要和电路图连起来的




#include<reg52.h>
sbit DQ = P3^0;
unsigned char code
tab[] = {0xc0,0xf9,0xa4,0xb0,0x92,0x82,0xf8,0x80,0x90};
void delay(int i)
{
while(i--);
}
void tdelay(int useconds)
{
int s;
for(s=0;s<useconds;s++)
;
}
unsigned char ow_reset(void) {
unsigned char presence;
DQ=0;
tdelay(29);
DQ=1;
tdelay(3);
presence = DQ;
tdelay(25);
return(presence);
}
void write_bit(char bitval) {
DQ=0;
if(bitval==1) DQ=1;
tdelay(5);
DQ = 1;
}
void write_byte(char val) {
unsigned char i;
unsigned char temp;
for (i=0;i<8;i++) {
temp=val>>i;
temp&=0x01;
write_bit(temp);
}
tdelay(5);
}
unsigned char read_bit(void){
unsigned char i;
DQ=0;
DQ=1;
for(i=0;i<3;i++);
return(DQ);
}
unsigned char read_byte(void){
unsigned char i;
unsigned char value=0;
for(i=0;i<8;i++){
if(read_bit())value|=0x01<<i;
tdelay(6);
}
return(value);
}
unsigned int read_temperature(void){
unsigned char get[10];
unsigned char temp_lsb,temp_msb;
unsigned int t;
unsigned char k;
ow_reset();
write_byte(0xcc);
write_byte(0x44);
tdelay(5);
ow_reset();
write_byte(0xcc);
write_byte(0xbe);
for(k=1;k<2;k++){get[k]=read_byte();}
temp_msb=get[1];
temp_lsb=get[0];
t=temp_msb*256+temp_lsb;
t=t&0x0ff0;
if(t<0xff&&t>0xf0)
t=(-1)*t;
return t>>4;
}
void main(void)
{unsigned char temp,bw,sw,gw,tempd;
while(1)
{temp=read_temperature();
bw=temp/100;
tempd=temp%10;
if(225>temp>=0)
{
P2=0x01;
P0=tab[bw];
delay(1000);
P2=0x00;
P2=0x02;
P0=tab[sw];
delay(1000);
P2=0x00;
P2=0x04;
P0=tab[sw];
delay(1000);
P2=0x00;
P2=0x08;
P0=0xc6;
delay(1000);
P2=0x00;
}
if(temp>=40)
{
P1=0xff;
}
else
{
P1=0x00;
}} }
...全文
相关推荐
C语言实现十进制转换成二八十六进制
C语言实现十进制转换成二八十六进制的转换,代码已经经过调试可以使用,放心下载!
可以吧C语言编译成汇编语言的编译器,附源代码
可以吧C语言编译成汇编语言的编译器,附源代码
C语言和汇编语言的区别
C语言和汇编语言的区别
在KEIL中实现C语言嵌套的汇编语言
在单片机学习的过程中,掌握一点汇编语言是非常有必有的,作为低级语言汇编语言在单片机开发中有它不可取代的作用。但是要提高单片机技能,必须掌握C 语言编程,因为C 语言有强大的模块化管理思想。我想在很多人学习的过程中即学了汇编语言,又学习了C 语言,那么一个问题便随之而产生,如果将C 语言与汇编语言相互结合,达到更好的编程效果,本次讲解就是基于这个问题而生成的。
pc汇编语言+代码
nasm 汇编的一个教程和代码。教程讲解了如何调用c语言运行库和汇编基本使用的方法。


