单片机程序,帮我翻译成C语言!

来源:百度知道 编辑:UC知道 时间:2024/06/19 21:37:24
ORG 1100H
RING10:MOV R6,#20 ;输入密码
RING11:MOV R7,#20 ;800Hz
RING12:LCALL DL10 ;sound=1
CPL P3.0 ;延时0.5s
DJNZ R7,RING12
DJNZ R6,RING11
CLR P3.0
RET
ORG 1150H
RING20:MOV R3,#03
RING21:MOV R6,#20 ;判定密码错误
RING22:MOV R7,#20 ;1600Hz
RING23:LCALL DL20 ;sound=3
CPL P3.0 ;延时0.25s
DJNZ R7,RING23
DJNZ R6,RING22
CLR P3.0
MOV R7,#200
RING24:LCALL DL10
DJNZ R7,RING24
DJNZ R3,RING21
CLR P3.0
RET
ORG 1200H
RING30:MOV R3,#02
RING31:MOV R6,#20 ;选择用电设备
RING32:MOV R7,#20 ;800Hz
RING33:LCALL DL10 ;sound=2
CPL P3.0 ;延时0.5s
DJNZ R7,RING33
DJNZ R6,RING32
CLR P3.0
MOV R7,#200
RING34:LCALL DL10
DJNZ R7,RING34
DJNZ R3,RING31
CLR P3.0
RET
ORG 1250H
RING40:MOV R3,#03
RING41:MOV R6,#20 ;控制电器
RING42:MOV R7,#20 ;800Hz
RING43:LCALL DL10 ;sound=3
CPL P3.0 ;延时0.5s
DJNZ R7,RING43
DJNZ R6,RING42

算了,还是给你看了看,没调试过,延时精度肯定没有汇编的高。
你自己看看吧,应该不用注释了,基本上对着你那个写的,相关函数的意思我想也写的很明确了。

void delay1250us(void)
{
unsigned char i,j;
for(i=25;i>0;i--)
{
for(j=25;j>0;j--)
;
}
}

void delay625us(void)
{
unsigned char i,j;
for(i=12;i>0;i--)
{
for(j=25;j>0;j--)
;
}
}

void delay20ms(void)
{
unsigned char i,j;
for(i=50;i>0;i--)
{
for(j=200;j>0;j--)
;
}
}

void InputPassword(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
{
for(j=20;j>0;j--)
{
delay1250us();
P3_0=~P3_0;
}
}
P3_0=0x00;
}

void JudgePassword(void)
{
unsigned char i,j,k,l;
for(k=3;k>0;k--)
{
for(i=20;i>0;i--)
{
for(j=20;j>0;j--)
{
delay625us();
P3_0=~P3_0;