内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

c語言紅外測距傳感器函數(shù) 紅外線測距傳感器原理圖

C語言轉(zhuǎn)匯編語言(把下面的C語言轉(zhuǎn)成單片機(jī)匯編語言)

; .\test5.SRC generated from: test5.c

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)城西,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

; COMPILER INVOKED BY:

; E:\Program Files\keil\C51\BIN\C51.EXE test5.c BROWSE DEBUG OBJECTEXTEND SRC(.\test5.SRC)

$NOMOD51

NAME TEST5

P0 DATA 080H

P1 DATA 090H

P2 DATA 0A0H

P3 DATA 0B0H

T0 BIT 0B0H.4

AC BIT 0D0H.6

T1 BIT 0B0H.5

T2 BIT 090H.0

EA BIT 0A8H.7

IE DATA 0A8H

EXF2 BIT 0C8H.6

RD BIT 0B0H.7

ES BIT 0A8H.4

IP DATA 0B8H

RI BIT 098H.0

INT0 BIT 0B0H.2

CY BIT 0D0H.7

TI BIT 098H.1

INT1 BIT 0B0H.3

RCAP2H DATA 0CBH

PS BIT 0B8H.4

SP DATA 081H

T2EX BIT 090H.1

OV BIT 0D0H.2

RCAP2L DATA 0CAH

C_T2 BIT 0C8H.1

WR BIT 0B0H.6

RCLK BIT 0C8H.5

TCLK BIT 0C8H.4

SBUF DATA 099H

PCON DATA 087H

SCON DATA 098H

TMOD DATA 089H

TCON DATA 088H

IE0 BIT 088H.1

IE1 BIT 088H.3

B DATA 0F0H

CP_RL2 BIT 0C8H.0

ACC DATA 0E0H

ET0 BIT 0A8H.1

ET1 BIT 0A8H.3

TF0 BIT 088H.5

ET2 BIT 0A8H.5

TF1 BIT 088H.7

TF2 BIT 0C8H.7

RB8 BIT 098H.2

TH0 DATA 08CH

EX0 BIT 0A8H.0

IT0 BIT 088H.0

TH1 DATA 08DH

TB8 BIT 098H.3

EX1 BIT 0A8H.2

IT1 BIT 088H.2

TH2 DATA 0CDH

P BIT 0D0H.0

SM0 BIT 098H.7

TL0 DATA 08AH

SM1 BIT 098H.6

TL1 DATA 08BH

SM2 BIT 098H.5

TL2 DATA 0CCH

p21 BIT 0A0H.1

PT0 BIT 0B8H.1

p23 BIT 0A0H.3

PT1 BIT 0B8H.3

RS0 BIT 0D0H.3

PT2 BIT 0B8H.5

TR0 BIT 088H.4

RS1 BIT 0D0H.4

p25 BIT 0A0H.5

TR1 BIT 088H.6

TR2 BIT 0C8H.2

PX0 BIT 0B8H.0

PX1 BIT 0B8H.2

DPH DATA 083H

DPL DATA 082H

EXEN2 BIT 0C8H.3

REN BIT 098H.4

T2CON DATA 0C8H

RXD BIT 0B0H.0

TXD BIT 0B0H.1

F0 BIT 0D0H.5

PSW DATA 0D0H

?PR?timer0?TEST5 SEGMENT CODE

?PR?timer1?TEST5 SEGMENT CODE

?PR?_delay?TEST5 SEGMENT CODE

?PR?_pwm1?TEST5 SEGMENT CODE

?PR?_pwm0?TEST5 SEGMENT CODE

?PR?foot0?TEST5 SEGMENT CODE

?PR?foot1?TEST5 SEGMENT CODE

?PR?foot2?TEST5 SEGMENT CODE

?PR?foot3?TEST5 SEGMENT CODE

?PR?main?TEST5 SEGMENT CODE

?CO?TEST5 SEGMENT CODE

?DT?TEST5 SEGMENT DATA

EXTRN CODE (?C_STARTUP)

PUBLIC rud1

PUBLIC z

PUBLIC y

PUBLIC x

PUBLIC n

PUBLIC m

PUBLIC l

PUBLIC k

PUBLIC j

PUBLIC i

PUBLIC d

PUBLIC c?

PUBLIC b

PUBLIC a?

PUBLIC rud3

PUBLIC rud2

PUBLIC date1

PUBLIC date0

PUBLIC main

PUBLIC foot3

PUBLIC foot2

PUBLIC foot1

PUBLIC foot0

PUBLIC _pwm0

PUBLIC _pwm1

PUBLIC _delay

PUBLIC timer1

PUBLIC timer0

RSEG ?DT?TEST5

rud2: DS 2

rud3: DS 2

a?: DS 2

b: DS 2

c?: DS 2

d: DS 2

i: DS 2

j: DS 2

k: DS 2

l: DS 2

m: DS 2

n: DS 2

x: DS 2

y: DS 2

z: DS 2

rud1: DS 2

RSEG ?CO?TEST5

date0:

DW 004B0H

DW 004C9H

DW 004E2H

DW 004FBH

DW 00514H

DW 0052DH

DW 00546H

DW 0055FH

DW 00578H

DW 00591H

DW 005AAH

DW 005C3H

DW 005DCH

DW 005F5H

DW 0060EH

DW 00627H

DW 00640H

DW 00659H

DW 00672H

DW 0068BH

DW 006A4H

DW 006BDH

DW 006D6H

DW 006EFH

DW 00708H

date1:

DW 003E8H

DW 00401H

DW 0041AH

DW 00433H

DW 0044CH

DW 00465H

DW 0047EH

DW 00497H

DW 004B0H

DW 004C9H

DW 004E2H

DW 004FBH

DW 00514H

DW 0052DH

DW 00546H

DW 0055FH

DW 00578H

DW 00591H

DW 005AAH

DW 005C3H

DW 005DCH

DW 005F5H

DW 0060EH

DW 00627H

DW 00640H

DW 00659H

DW 00672H

DW 0068BH

DW 006A4H

DW 006BDH

DW 006D6H

DW 006EFH

DW 00708H

DW 00721H

DW 0073AH

DW 00753H

DW 0076CH

DW 00785H

DW 0079EH

DW 007B7H

DW 007D0H

; # include reg52.h

; #define uchar unsigned char

; #define uint unsigned int

; uint a,b,c,d,i,j,k,x,y,z,l,m,n,rud1,rud2,rud3;

; sbit p21=P2^1;

; sbit p23=P2^3;//

; sbit p25=P2^5; //

; int code date0[]={1200,1225,1250,1275,1300,

; 1325,1350,1375,1400,

; 1425,1450,1475,1500,

; 1525,1550,1575,1600,

; 1625,1650,1675,1700,

; 1725,1750,1775,1800}; //p25 25個

;

; int code date1[]={1000,1025,1050,1075,1100,

; 1125,1150,1175,1200,

; 1225,1250,1275,1300,

; 1325,1350,1375,1400,

; 1425,1450,1475,1500,

; 1525,1550,1575,1600,

; 1625,1650,1675,1700,

; 1725,1750,1775,1800,

; 1825,1850,1875,1900,

; 1925,1950,1975,2000}; //p21p23 41個

;

CSEG AT 0000BH

LJMP timer0

; void timer0(void) interrupt 1

RSEG ?PR?timer0?TEST5

USING 0

timer0:

PUSH ACC

PUSH PSW

; SOURCE LINE # 26

; {

; p25=~p25;

; SOURCE LINE # 28

CPL p25

; c=20000-c;

; SOURCE LINE # 29

CLR C

MOV A,#020H

SUBB A,c?+01H

MOV c?+01H,A

MOV A,#04EH

SUBB A,c?

MOV c?,A

; TH0=-(c/256); TL0=-(c%256);

; SOURCE LINE # 30

CPL A

INC A

MOV TH0,A

MOV A,c?+01H

CPL A

INC A

MOV TL0,A

; }

; SOURCE LINE # 31

POP PSW

POP ACC

RETI

; END OF timer0

CSEG AT 0001BH

LJMP timer1

; void timer1(void) interrupt 3

RSEG ?PR?timer1?TEST5

USING 0

timer1:

PUSH ACC

PUSH PSW

; SOURCE LINE # 32

; {

;

; p21=~p21;

; SOURCE LINE # 35

CPL p21

; p23=~p23;

; SOURCE LINE # 36

CPL p23

; d=20000-d;

; SOURCE LINE # 37

CLR C

MOV A,#020H

SUBB A,d+01H

MOV d+01H,A

MOV A,#04EH

SUBB A,d

MOV d,A

; TH1=-(d/256); TL1=-(d%256);

; SOURCE LINE # 38

CPL A

INC A

MOV TH1,A

MOV A,d+01H

CPL A

INC A

MOV TL1,A

;

; }

; SOURCE LINE # 40

POP PSW

POP ACC

RETI

; END OF timer1

;

; void delay(t)

RSEG ?PR?_delay?TEST5

L?0033:

USING 0

MOV R7,#030H

MOV R6,#075H

LCALL _delay

LCALL _delay

LCALL _delay

LCALL _delay

_delay:

; SOURCE LINE # 42

;---- Variable 't?240' assigned to Register 'R6/R7' ----

; {for(l=1;l=t;l++);}

; SOURCE LINE # 43

MOV l,#00H

MOV l+01H,#01H

?C0003:

SETB C

MOV A,l+01H

SUBB A,R7

MOV A,l

SUBB A,R6

JNC ?C0006

INC l+01H

MOV A,l+01H

JNZ ?C0003

INC l

?C0028:

SJMP ?C0003

?C0006:

RET

; END OF _delay

;

; void pwm1(y)

RSEG ?PR?_pwm1?TEST5

L?0035:

USING 0

MOV A,j+01H

ADD A,ACC

MOV R7,A

MOV A,j

RLC A

MOV R6,A

MOV A,#LOW (date1)

ADD A,R7

MOV DPL,A

MOV A,#HIGH (date1)

ADDC A,R6

MOV DPH,A

CLR A

MOVC A,@A+DPTR

MOV R6,A

MOV A,#01H

MOVC A,@A+DPTR

MOV R7,A

_pwm1:

; SOURCE LINE # 45

;---- Variable 'y?341' assigned to Register 'R6/R7' ----

; {

; SOURCE LINE # 46

; b=y;

; SOURCE LINE # 47

MOV b,R6

MOV b+01H,R7

; d=b;

; SOURCE LINE # 48

MOV d,b

MOV d+01H,b+01H

; p21=1;

; SOURCE LINE # 49

SETB p21

; p23=1;

; SOURCE LINE # 50

SETB p23

; TH1=-(b/256); TL1=-(b%256);

; SOURCE LINE # 51

MOV A,b

CPL A

INC A

MOV TH1,A

MOV A,b+01H

CPL A

INC A

MOV TL1,A

; TR1=1;//啟動定時器

; SOURCE LINE # 52

SETB TR1

; }

; SOURCE LINE # 53

RET

; END OF _pwm1

; void pwm0(x)

RSEG ?PR?_pwm0?TEST5

L?0034:

USING 0

MOV A,i+01H

ADD A,ACC

MOV R7,A

MOV A,i

RLC A

MOV R6,A

MOV A,#LOW (date0)

ADD A,R7

MOV DPL,A

MOV A,#HIGH (date0)

ADDC A,R6

MOV DPH,A

CLR A

MOVC A,@A+DPTR

MOV R6,A

MOV A,#01H

MOVC A,@A+DPTR

MOV R7,A

_pwm0:

; SOURCE LINE # 54

;---- Variable 'x?442' assigned to Register 'R6/R7' ----

; {

; SOURCE LINE # 55

; a=x;

; SOURCE LINE # 56

MOV a?,R6

MOV a?+01H,R7

; c=a;

; SOURCE LINE # 57

MOV c?,a?

MOV c?+01H,a?+01H

; p25=1;

; SOURCE LINE # 58

SETB p25

; TH0=-(a/256); TL0=-(a%256);

; SOURCE LINE # 59

MOV A,a?

CPL A

INC A

MOV TH0,A

MOV A,a?+01H

CPL A

INC A

MOV TL0,A

; TR0=1;//啟動定時器

; SOURCE LINE # 60

SETB TR0

; }

; SOURCE LINE # 61

RET

; END OF _pwm0

; void foot0()

RSEG ?PR?foot0?TEST5

foot0:

USING 0

; SOURCE LINE # 62

; {

; SOURCE LINE # 63

; for(i=0;i24;i++)

; SOURCE LINE # 64

CLR A

MOV i,A

MOV i+01H,A

?C0009:

; {

; SOURCE LINE # 65

; pwm0(date0[i]);

; SOURCE LINE # 66

LCALL L?0034

; delay(888);

; SOURCE LINE # 67

MOV R7,#078H

MOV R6,#03H

LCALL _delay

; }

; SOURCE LINE # 68

INC i+01H

MOV A,i+01H

JNZ ?C0029

INC i

?C0029:

CLR C

SUBB A,#018H

MOV A,i

SUBB A,#00H

JC ?C0009

; }

; SOURCE LINE # 69

?C0012:

RET

; END OF foot0

; void foot1()

RSEG ?PR?foot1?TEST5

foot1:

USING 0

; SOURCE LINE # 70

; {

; SOURCE LINE # 71

; for(j=0;j14;j++)

; SOURCE LINE # 72

CLR A

MOV j,A

MOV j+01H,A

?C0013:

; { pwm1(date1[j]);

; SOURCE LINE # 73

LCALL L?0035

; delay(1332);

; SOURCE LINE # 74

MOV R7,#034H

MOV R6,#05H

LCALL _delay

; }

; SOURCE LINE # 75

INC j+01H

MOV A,j+01H

JNZ ?C0030

INC j

?C0030:

CLR C

SUBB A,#0EH

MOV A,j

SUBB A,#00H

JC ?C0013

; }

; SOURCE LINE # 76

?C0016:

RET

; END OF foot1

; void foot2()

RSEG ?PR?foot2?TEST5

foot2:

USING 0

; SOURCE LINE # 77

; {

; SOURCE LINE # 78

; for(i=24;i1;i--)

; SOURCE LINE # 79

MOV i,#00H

MOV i+01H,#018H

?C0017:

; {

; SOURCE LINE # 80

; pwm0(date0[i]);

; SOURCE LINE # 81

LCALL L?0034

; delay(888);

; SOURCE LINE # 82

MOV R7,#078H

MOV R6,#03H

LCALL _delay

; }

; SOURCE LINE # 83

MOV A,i+01H

DEC i+01H

JNZ ?C0031

DEC i

?C0031:

SETB C

MOV A,i+01H

SUBB A,#01H

MOV A,i

SUBB A,#00H

JNC ?C0017

; }

; SOURCE LINE # 84

?C0020:

RET

; END OF foot2

; void foot3()

RSEG ?PR?foot3?TEST5

foot3:

USING 0

; SOURCE LINE # 85

; {

; SOURCE LINE # 86

; for(j=14;j1;j--)

; SOURCE LINE # 87

MOV j,#00H

MOV j+01H,#0EH

?C0021:

; {

; SOURCE LINE # 88

; pwm1(date1[j]);

; SOURCE LINE # 89

LCALL L?0035

; delay(1332);

; SOURCE LINE # 90

MOV R7,#034H

MOV R6,#05H

LCALL _delay

; }

; SOURCE LINE # 91

MOV A,j+01H

DEC j+01H

JNZ ?C0032

DEC j

?C0032:

SETB C

MOV A,j+01H

SUBB A,#01H

MOV A,j

SUBB A,#00H

JNC ?C0021

; }

; SOURCE LINE # 92

?C0024:

RET

; END OF foot3

; void main(void)

RSEG ?PR?main?TEST5

main:

USING 0

; SOURCE LINE # 93

; {

; SOURCE LINE # 94

; p21=0;p23=0;p25=0;

; SOURCE LINE # 95

CLR p21

CLR p23

CLR p25

; TMOD=0x11;EA=1;ET0=1;ET1=1;

; SOURCE LINE # 96

MOV TMOD,#011H

SETB EA

SETB ET0

SETB ET1

; delay(30000); delay(30000); delay(30000); delay(30000);delay(30000);

; SOURCE LINE # 97

LCALL L?0033

; pwm0(1200);

; SOURCE LINE # 98

MOV R7,#0B0H

MOV R6,#04H

LCALL _pwm0

; pwm1(1000);

; SOURCE LINE # 99

MOV R7,#0E8H

DEC R6

LCALL _pwm1

; delay(30000); delay(30000); delay(30000); delay(30000);delay(30000);

; SOURCE LINE # 100

LCALL L?0033

?C0025:

; while(1)

; SOURCE LINE # 101

; {

; SOURCE LINE # 102

; p21=0;p23=0;p25=0;

; SOURCE LINE # 103

CLR p21

CLR p23

CLR p25

; foot0();//delay(30000);

; SOURCE LINE # 104

LCALL foot0

; foot1();//delay(30000);

; SOURCE LINE # 105

LCALL foot1

; foot2();//delay(30000);

; SOURCE LINE # 106

LCALL foot2

; foot3();//delay(30000);

; SOURCE LINE # 107

LCALL foot3

; }

; SOURCE LINE # 108

SJMP ?C0025

; END OF main

END

;--------------------------------------------------------

;我是用keil uvision2轉(zhuǎn)的。

;你C語言編譯時正常,但轉(zhuǎn)成匯編后就編譯有問題。

;錯誤信息如下:

;test5.src(138): error A8: ATTEMPT TO DEFINE AN ALREADY DEFINED LABEL

;我也不知道哪來的錯誤。

;希望可以幫到你。

C語言怎么寫紅外程序?實(shí)現(xiàn)遙控控制八個led。求程序和詳細(xì)解釋。

下面是一個用C寫的遙控器程序.能在數(shù)碼管上顯示鍵碼.

#include reg52.h

#define c(x) (x*110592/120000)

sbit Ir_Pin=P3^3;

unsigned char code Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,

0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共陽極數(shù)碼顯示碼0-F.

unsigned char code Led_Sel[]={0xe,0xd,0xb,0x7};

unsigned char Led_Buf[4]; //顯示緩沖區(qū)

char Led_Index; //位選

unsigned char Ir_Buf[4]; //用于保存解碼結(jié)果

//==============================================================

//數(shù)碼管掃描

timer0() interrupt 1 using 1

{

TL0=65536-1000;

TH0=(65536-1000)/256; //定時器0設(shè)定約1000us中斷一次,用于數(shù)碼管掃描

P0=0xff;

P2=Led_Sel[Led_Index]; //位選

P0=Led_Tab[Led_Buf[Led_Index]]; //段選

if(++Led_Index3) Led_Index=0; //四個掃描完了,到第一個數(shù)碼管

}

//==============================================================

unsigned int Ir_Get_Low()

{

TL1=0;

TH1=0;

TR1=1;

while(!Ir_Pin (TH10x80)==0);

TR1=0;

return TH1*256+TL1;

}

//=============================================================

unsigned int Ir_Get_High()

{

TL1=0;

TH1=0;

TR1=1;

while(Ir_Pin (TH10x80)==0);

TR1=0;

return TH1*256+TL1;

}

//==============================================================

main()

{

unsigned int temp;

char i,j;

Led_Index=1;

TMOD=0x11;

TL0=65536-1000;

TH0=(65536-1000)/256; //定時器0設(shè)定約1000us中斷一次,用于數(shù)碼管掃描

EA=1;

ET0=1;

TR0=1;

Led_Buf[0]=0;

Led_Buf[1]=0;

Led_Buf[2]=0;

Led_Buf[3]=0; //顯示區(qū)設(shè)成0

do{

restart:

while(Ir_Pin);

temp=Ir_Get_Low();

if(tempc(8500) || tempc(9500)) continue;//引導(dǎo)脈沖低電平9000

temp=Ir_Get_High();

if(tempc(4000) || tempc(5000)) continue;//引導(dǎo)脈沖高電平4500

for(i=0;i4;i++) //4個字節(jié)

for(j=0;j8;j++) //每個字節(jié)8位

{

temp=Ir_Get_Low();

if(tempc(200) || tempc(800)) goto restart;

temp=Ir_Get_High();

if(tempc(200) || tempc(2000)) goto restart;

Ir_Buf[i]=1;

if(tempc(1120)) Ir_Buf[i]|=0x80;

}

Led_Buf[0]=Ir_Buf[2]0xf;

Led_Buf[1]=(Ir_Buf[2]/16)0xf;

Led_Buf[2]=Ir_Buf[3]0xf;

Led_Buf[3]=(Ir_Buf[3]/16)0xf; //顯示結(jié)果

}while(1);

}

基于51單片機(jī)紅外遙控代碼(C語言)

以下文件是51單片機(jī)實(shí)現(xiàn)遙控解碼,通過數(shù)碼管顯示鍵碼的程序,P0口驅(qū)動數(shù)碼管段選,p2.6和p2.7為數(shù)碼管位選,接收頭連到P3.2口。此程序以通過驗(yàn)證,可以直接編譯使用,另外還有一個繼電器和蜂鳴器的控制,不用可以屏蔽掉。

;********************************************************************************

;* 描述: *

;* 遙控鍵值讀取器 *

;* 數(shù)碼管顯示, P0口為數(shù)碼管的數(shù)據(jù)口 *

;* *

;********************************************************************************

;遙控鍵值解碼-數(shù)碼管顯示 *

;********************************************************************************/

#include reg51.h

#include intrins.h

void IR_SHOW();

void delay(unsigned char x);//x*0.14MS

void delay1(unsigned char ms);

void beep();

sbit IRIN = P3^2;

sbit BEEP = P3^7;

sbit RELAY= P1^3;

sbit GEWEI= P2^7;

sbit SHIWEI= P2^6;

unsigned char IRCOM[8];

unsigned char code table[16] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

main()

{

IE = 0x81; //允許總中斷中斷,使能 INT0 外部中斷

TCON = 0x1; //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)

delay(1);

IRIN=1;

BEEP=1;

RELAY=1;

for(;;)

{

IR_SHOW();

}

} //end main

void IR_IN() interrupt 0 using 0

{

unsigned char i,j,k,N=0;

EA = 0;

I1:

for (i=0;i4;i++)

{

if (IRIN==0) break;

if (i==3) {EA =1;return;}

}

delay(20);

if (IRIN==1) goto I1; //確認(rèn)IR信號出現(xiàn)

while (!IRIN) //等 IR 變?yōu)楦唠娖?/p>

{delay(1);}

for (j=0;j4;j++)

{

for (k=0;k8;k++)

{

while (IRIN) //等 IR 變?yōu)榈碗娖?/p>

{delay(1);}

while (!IRIN) //等 IR 變?yōu)楦唠娖?/p>

{delay(1);}

while (IRIN) //計算IR高電平時長

{

delay(1);

N++;

if (N=30) {EA=1;return;}

}

IRCOM[j]=IRCOM[j] 1;

if (N=8) {IRCOM[j] = IRCOM[j] | 0x80;}

N=0;

}//end for k

}//end for j

if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}

IRCOM[5]=IRCOM[2] 0x0F;

IRCOM[6]=IRCOM[2] 0xF0;

IRCOM[6]=IRCOM[6] 4;

beep();

EA = 1;

}

void IR_SHOW()

{

P0 = table[IRCOM[5]];

GEWEI = 0;

SHIWEI = 1;

delay1(4);

P0 = table[IRCOM[6]];

SHIWEI = 0;

GEWEI = 1;

delay1(4);

}

void beep()

{

unsigned char i;

for (i=0;i100;i++)

{

delay(5);

BEEP=!BEEP;

}

BEEP=1;

}

void delay(unsigned char x)//x*0.14MS

{

unsigned char i;

while(x--)

{

for (i = 0; i13; i++) {}

}

}

void delay1(unsigned char ms)

{

unsigned char i;

while(ms--)

{

for(i = 0; i120; i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

求紅外線計數(shù)器c語言程序

#includereg51.h

#includeintrins.h

#define NOP _nop_()

#define KEY_PRESS

#include "WIN24C02.H"

unsigned char code table[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71};

///////////////////////////////

#define uchar unsigned char

uchar times=0;

uchar dis_buf[4]={0};

uchar key_flag=0;

uchar key_cnt=0;

uchar exint_flag=0;

uchar buzzer_cnt=0;

uchar int_flag=0;

unsigned int int_cnt=0;

///////////////////////////////////

sbit ir_Induction=P1^0;

sbit ming=P3^7;

sbit ir_s=P3^2;

sbit iic_sda=P0^5;

sbit iic_clk=P0^4;

unsigned int ir_num=0;

sfr isp_wdt = 0xE1;

sfr isp_data = 0xE2;

sfr isp_addrh = 0xE3;

sfr isp_addrl = 0xE4;

sfr isp_cmd = 0xE5;

sfr isp_trig = 0xE6;

sfr isp_contr = 0xE7;

/*****************************************/

/***************STC89CXX_EEPROM扇區(qū)擦除程序*************************/

void STC89CXX_EEPROM_Erase(unsigned char t_addr)

{

isp_addrh = t_addr; //可以不要 扇區(qū)里任意一個字節(jié)的地址都是扇區(qū)地址,無需求首地址,單片機(jī)會自己處理

isp_addrl = 0;

// EA = 0; //關(guān)中斷

isp_contr = 0x81;

isp_cmd = 3; //扇區(qū)擦除,要某字節(jié)為空,必須擦除1個扇區(qū)

isp_trig = 0x46; //先送0x46再送 0xb9 ISP/IAP 觸發(fā)寄存器,每次都需要如此

isp_trig = 0xb9; //送完0xb9后 ISP/IAP 立即被觸發(fā)啟動

// EA = 1;

// 開中斷

}

/***********************************************/

void STC89CXX_EEPROM_Char_Write(unsigned int Write_addr ,unsigned int Write_data)

{

isp_data = (Write_data8)0xff;

isp_addrh = Write_addr/256; //送地址高位

isp_addrl = Write_addr%256; //地址低位

// EA = 0; /* 關(guān)中斷 */

isp_contr = 0x81;

isp_cmd = 2; //送扇區(qū)命令

isp_trig = 0x46;

isp_trig = 0xb9;

isp_data = Write_data0xff;

isp_addrl = (Write_addr+1)%256;

isp_contr = 0x81;

isp_cmd = 2; //送扇區(qū)命令

isp_trig = 0x46;

isp_trig = 0xb9;

// EA = 1;

/* 開中斷 */

}

/**************************************************************/

unsigned int STC89CXX_EEPROM_Char_Read(unsigned int Read_addr)

{

unsigned int temp=0;

isp_addrh = Read_addr/256; //送地址高字節(jié)

isp_addrl = Read_addr%256; //送地址低字節(jié)(從0開始到num-1為止)

// EA = 0; /* 關(guān)中斷 */

isp_contr = 0x81; /*20M,是0x80 orl 1 */

isp_cmd = 1; // 1表示字節(jié)讀

isp_trig = 0x46; //先送0x46再送 0xb9 ISP/IAP 觸發(fā)寄存器,每次都需要如此

isp_trig = 0xb9; //送完0xb9后 ISP/IAP 立即被觸發(fā)啟動

temp= (isp_data8);

isp_addrl = (Read_addr+1)%256;

isp_contr = 0x81; /*20M,是0x80 orl 1 */

isp_cmd = 1; // 1表示字節(jié)讀

isp_trig = 0x46; //先送0x46再送 0xb9 ISP/IAP 觸發(fā)寄存器,每次都需要如此

isp_trig = 0xb9;

temp|=isp_data;

// EA = 1; //空指令

/* 開中斷 */

return(temp);

}

static void iic_start()

{

iic_sda=1;

iic_clk=1;

NOP;

iic_sda=0;

iic_clk=0;

}

static void iic_stop()

{

iic_clk=0;

iic_sda=0;

iic_clk=1;

NOP;

iic_sda=1;

}

static void iic_write_byte(uchar dat)

{

uchar i;

for(i=0;i8;i++)

{

iic_clk=0;

iic_sda=dat0x80;

NOP;

iic_clk=1;

NOP;

dat=1;

}

iic_clk=0;

}

static uchar recive_ack()

{

uchar i=0;

iic_clk=0;

NOP;

//iic_sda=1;

NOP;

iic_clk=1;

NOP;

NOP;

while(iic_sda);

iic_clk=0;

// if(i==200)

// return 0 ;

//else

return 1;

}

static void send_ack()

{

uchar i=0;

iic_sda=1;

NOP;

iic_clk=0;

NOP;

iic_sda=0;

NOP;

iic_clk=1;

NOP;

iic_clk=0;

iic_sda=1;

}

void iic_write(uchar addr,uchar dat)

{

iic_start();

iic_write_byte(0xa0);

recive_ack();

iic_write_byte(addr);

recive_ack();

iic_write_byte(dat);

recive_ack();

iic_stop();

}

static uchar iic_read_byte()

{

uchar i;

uchar dat=0;

for(i=0;i8;i++)

{

// iic_sda=0;

dat=1;

iic_clk=0;

NOP;

iic_clk=1;

NOP;

dat|=iic_sda;

}

iic_clk=0;

return dat;

}

uchar iic_read(uchar addr)

{

uchar dat;

iic_start();

iic_write_byte(0xa0);

recive_ack();

iic_write_byte(addr);

recive_ack();

iic_start();

iic_write_byte(0xa1);

recive_ack();

dat=iic_read_byte();

iic_stop();

return dat;

}

void delay(unsigned int z)

{

unsigned int x,y;

for(x=z;x0;x--)

{

for(y=100;y0;y--);

}

}

void iic_writes(uchar addr,void *buf,uchar num)

{

uchar i;

uchar *pt=(uchar *)buf;

for(i=0;inum;i++)

{

iic_write(addr+i,pt[i]);

delay(10);

}

}

void iic_reads(uchar addr,void *buf,uchar num)

{

uchar i;

uchar *pt=(uchar *)buf;

for(i=0;inum;i++)

{

pt[i]=iic_read(addr+i);

//delay(3);

}

}

sbit KEY1=P3^6;

unsigned char i_com=0x88;

//unsigned char flag=0;

void timer0_init()

{

TMOD=0x11;

TH0=0xfd;

TL0=0x80;

ET0=1;

TR0=1;

TH1=0xfd;

TL1=0x80;

ET1=1;

TR1=1;

}

void ch_value( )

{

dis_buf[0]=(ir_num/1000)%10;

dis_buf[1]=(ir_num/100)%10;

dis_buf[2]=(ir_num/10)%10;

dis_buf[3]=(ir_num)%10;

}

void timer0_isq()interrupt 1

{

TH0=0xf8;

TL0=0x84;

P2=0xff;

P0= (8(times));

P2=table[dis_buf[times]];

times=++times%4;

}

void display()

{

P2=0xff;

P0= (i_com(0));

P2=table[dis_buf[0]];

delay(3);

P2=0xff;

P0= (i_com(1));

P2=table[dis_buf[1]];

delay(3);

P2=0xff;

P0= (i_com(2));

P2=table[dis_buf[2]];

delay(3);

P2=0xff;

P0= (i_com(3));

P2=table[dis_buf[3]];

delay(3);

}

void int_0() interrupt 0

{

// EA=0;

//display();

exint_flag=1;

int_flag=1;

EX0=0;

ir_num++;

#ifdef KEY_PRESS

// IE0=0;

#endif

// EA=1;

}

void timer1_isq()interrupt 3

{

TH1=0xfa;

TL1=0x84;

if(key_flag(++key_cnt==10))

{

if(KEY1)

{

key_flag=0;

}

key_cnt=0;

}

if(int_flag(++int_cnt==20))

{

#ifdef KEY_PRESS

if(ir_s)

#else

if(!ir_s)

#endif

{

int_flag=0;

}

int_cnt=0;

}

if(exint_flag)

{

ming=0;

}

if(exint_flag(++buzzer_cnt==40))

{

ming=1;

buzzer_cnt=0;

exint_flag=0;

}

}

void main()

{

delay(500);

timer0_init();

WIN24C02_init(); //24c02初始化子程序

EX0=1;

IT0=1;

IE0=0;

EA=1;

PT0=1;

// ir_num=STC89CXX_EEPROM_Char_Read(0x2000);

iic_reads(0x10,ir_num,2);

//ir_num=WIN24C02_read(0x00)|(WIN24C02_read(0x01)8);

ch_value();

while(1)

{

if(ir_s==1)

{

ir_s=0;

}

ch_value();

//display();

if(!EX0)

{

if(ir_num=9999)

ir_num=0;

iic_writes(0x10,ir_num,2);

while(int_flagKEY1);//display();

//STC89CXX_EEPROM_Erase(0x20);

//STC89CXX_EEPROM_Char_Write(0x2000,ir_num);//存數(shù)據(jù)到EEPROM

// WIN24C02_write(0x00,ir_num0xff);

// WIN24C02_write(0x01,(ir_num8)0xff);

//IE0=0;

ch_value();

#ifdef KEY_PRESS

IE0=0;

#else

IE0=0;

#endif

EX0=1;

}

if(!KEY1)

{

// display();

EX0=0;

ir_num=0;

//STC89CXX_EEPROM_Erase(0x20);

//STC89CXX_EEPROM_Char_Write(0x2000,ir_num);//存數(shù)據(jù)到EEPROM

iic_writes(0x10,ir_num,2);

// WIN24C02_write(0x00,ir_num0xff);

// WIN24C02_write(0x01,(ir_num8)0xff);

ch_value();

// EA=1;

while(!KEY1);

IE0=0;

EX0=1;

}

}

}

急求《單片機(jī)C語言程序設(shè)計實(shí)訓(xùn)100例——基于8051+Proteus仿真》第三部分綜合設(shè)計C語言源代碼

這本書一共5章節(jié),你說第三部分指的哪里?

第五章才是綜合設(shè)計部分啊,而且這部分有好多例程,也不知道你要哪部分?

第1章 8051單片機(jī)C語言程序設(shè)計概述 1

1.1 8051單片機(jī)引腳 1

1.2 數(shù)據(jù)與程序內(nèi)存 5

1.3 特殊功能寄存器 6

1.4 外部中斷、定時器/計數(shù)器及串口應(yīng)用 8

1.5 有符號與無符號數(shù)應(yīng)用、數(shù)位分解、位操作 9

1.6 變量、存儲類型與存儲模式 11

1.7 關(guān)于C語言運(yùn)算符的優(yōu)先級 13

1.8 字符編碼 15

1.9 數(shù)組、字符串與指針 16

1.10 流程控制 18

1.11 可重入函數(shù)和中斷函數(shù) 19

1.12 C語言在單片機(jī)系統(tǒng)開發(fā)中的優(yōu)勢 20

第2章 Proteus操作基礎(chǔ) 21

2.1 Proteus操作界面簡介 21

2.2 仿真電路原理圖設(shè)計 22

2.3 元件選擇 25

2.4 調(diào)試仿真 29

2.5 Proteus與Vision 3的聯(lián)合調(diào)試 29

2.6 Proteus在8051單片機(jī)應(yīng)用系統(tǒng)開發(fā)的優(yōu)勢 30

第3章 基礎(chǔ)程序設(shè)計 32

3.1 閃爍的LED 32

3.2 雙向來回的流水燈 34

3.3 花樣流水燈 36

3.4 LED模擬交通燈 38

3.5 分立式數(shù)碼管循環(huán)顯示0~9 40

3.6 集成式數(shù)碼管動態(tài)掃描顯示 41

3.7 按鍵調(diào)節(jié)數(shù)碼管閃爍增減顯示 44

3.8 數(shù)碼管顯示4×4鍵盤矩陣按鍵 46

3.9 普通開關(guān)與撥碼開關(guān)應(yīng)用 49

3.10 繼電器及雙向可控硅控制照明設(shè)備 51

3.11 INT0中斷計數(shù) 53

3.12 INT0及INT1中斷計數(shù) 55

3.13 TIMER0控制單只LED閃爍 58

3.14 TIMER0控制數(shù)碼管動態(tài)管顯示 62

3.15 TIMER0控制8×8LED點(diǎn)陣屏顯示數(shù)字 65

3.16 TIMER0控制門鈴聲音輸出 68

3.17 定時器控制交通指示燈 70

3.18 TIMER1控制音階演奏 72

3.19 TIMER0、TIMER1及TIMER2實(shí)現(xiàn)外部信號計數(shù)與顯示 75

3.20 TIMER0、TIMER1及INT0控制報警器與旋轉(zhuǎn)燈 77

3.21 按鍵控制定時器選播多段音樂 79

3.22 鍵控看門狗 82

3.23 雙機(jī)串口雙向通信 84

3.24 PC與單片機(jī)雙向通信 90

3.25 單片機(jī)內(nèi)置EEPROM讀/寫測試 95

第4章 硬件應(yīng)用 99

4.1 74HC138譯碼器與反向緩沖器控制數(shù)碼管顯示 100

4.2 串入并出芯片74HC595控制數(shù)碼管顯示四位數(shù)字 103

4.3 用74HC164驅(qū)動多只數(shù)碼管顯示 106

4.4 并串轉(zhuǎn)換器74HC165應(yīng)用 110

4.5 用74HC148擴(kuò)展中斷 112

4.6 串口發(fā)送數(shù)據(jù)到2片8×8點(diǎn)陣屏滾動顯示 115

4.7 數(shù)碼管BCD解碼驅(qū)動器CD4511與DM7447應(yīng)用 117

4.8 62256RAM擴(kuò)展內(nèi)存 119

4.9 用8255實(shí)現(xiàn)接口擴(kuò)展 121

4.10 可編程接口芯片8155應(yīng)用 124

4.11 串行共陰顯示驅(qū)動器控制4+2+2集成式數(shù)碼管顯示 129

4.12 14段與16段數(shù)碼管演示 133

4.13 16鍵解碼芯片74C922應(yīng)用 136

4.14 1602字符液晶工作于8位模式直接驅(qū)動顯示 139

4.15 1602液晶顯示DS1302實(shí)時時鐘 148

4.16 1602液晶屏工作于8位模式由74LS373控制顯示 153

4.17 1602液晶屏工作于4位模式實(shí)時顯示當(dāng)前時間 155

4.18 1602液晶屏顯示DS12887實(shí)時時鐘 159

4.19 時鐘日歷芯片PCF8583應(yīng)用 167

4.20 2×20串行字符液晶屏顯示 174

4.21 LGM12864液晶屏顯示程序 177

4.22 TG126410液晶屏串行模式顯示 184

4.23 Nokia7110液晶屏菜單控制程序 192

4.24 T6963C液晶屏圖文演示 199

4.25 ADC0832 A/D轉(zhuǎn)換與LCD顯示 211

4.26 用DAC0832生成鋸齒波 215

4.27 ADC0808 PWM實(shí)驗(yàn) 217

4.28 ADC0809 A/D轉(zhuǎn)換與顯示 220

4.29 用DAC0808實(shí)現(xiàn)數(shù)字調(diào)壓 221

4.30 16位A/D轉(zhuǎn)換芯片LTC1864應(yīng)用 223

4.31 I2C接口存儲器AT24C04讀/寫與顯示 225

4.32 I2C存儲器設(shè)計的中文硬件字庫應(yīng)用 233

4.33 I2C接口4通道A/D與單通道D/A轉(zhuǎn)換器PCF8591應(yīng)用 237

4.34 I2C接口DS1621溫度傳感器測試 241

4.35 用兼容I2C接口的MAX6953驅(qū)動4片5×7點(diǎn)陣顯示器 246

4.36 用I2C接口控制MAX6955驅(qū)動16段數(shù)碼管顯示 250

4.37 I2C接口數(shù)字電位器AD5242應(yīng)用 254

4.38 SPI接口存儲器AT25F1024讀/寫與顯示 257

4.39 SPI接口溫度傳感器TC72應(yīng)用測試 264

4.40 溫度傳感器LM35全量程應(yīng)用測試 268

4.41 SHT75溫濕度傳感器測試 272

4.42 直流電機(jī)正、反轉(zhuǎn)及PWM調(diào)速控制 278

4.43 正反轉(zhuǎn)可控的步進(jìn)電機(jī) 281

4.44 ULN2803驅(qū)動點(diǎn)陣屏仿電梯數(shù)字滾動顯示 284

4.45 液晶顯示MPX4250壓力值 286

4.46 12864LCD顯示24C08保存的開機(jī)畫面 289

4.47 用M145026與M145027設(shè)計的無線收發(fā)系統(tǒng) 293

4.48 DS18B20溫度傳感器測試 296

4.49 1-Wire式可尋址開關(guān)DS2405應(yīng)用測試 303

4.50 MMC存儲卡測試 307

第5章 綜合設(shè)計 316

5.1 帶日歷時鐘及溫度顯示的電子萬年歷 316

5.2 用8051+1601LCD設(shè)計的整型計算器 321

5.3 電子秤仿真設(shè)計 328

5.4 1602液晶屏顯示仿手機(jī)鍵盤按鍵字符 332

5.5 用24C04與1602液晶屏設(shè)計的簡易加密電子鎖 336

5.6 1-Wire總線器件ROM搜索與多點(diǎn)溫度監(jiān)測 341

5.7 高仿真數(shù)碼管電子鐘設(shè)計 356

5.8 用DS1302與12864LCD設(shè)計的可調(diào)式中文電子日歷 360

5.9 用T6963C液晶屏設(shè)計的指針式電子鐘 366

5.10 T6963C液晶屏中文顯示溫度與時間 370

5.11 T6963C液晶屏曲線顯示ADC0832兩路A/D轉(zhuǎn)換結(jié)果 372

5.12 溫度控制直流電機(jī)轉(zhuǎn)速 374

5.13 用74LS595與74LS154設(shè)計的16×16點(diǎn)陣屏 377

5.14 用8255與74LS154設(shè)計的16×16點(diǎn)陣屏 379

5.15 紅外遙控收發(fā)仿真 381

5.16 GP2D12紅外測距傳感器應(yīng)用 388

5.17 三端可調(diào)正穩(wěn)壓器LM317應(yīng)用測試 395

5.18 數(shù)碼管顯示的K型熱電偶溫度計 399

5.19 交流電壓檢測與數(shù)字顯示仿真 403

5.20 用MCP3421與RTD-PT100設(shè)計的鉑電阻溫度計 407

5.21 可接收串口信息的帶中英文硬字庫的80×16 LED點(diǎn)陣屏 414

5.22 模擬射擊訓(xùn)練游戲 422

5.23 GPS仿真 427

5.24 溫室監(jiān)控系統(tǒng)仿真 431

5.25 基于Modbus總線的數(shù)據(jù)采集與開關(guān)控制系統(tǒng)設(shè)計仿真 437

建議你到腳本之家網(wǎng)站去搜索一下看看有沒有這本書的電子檔。

C51紅外測距的C語言程序

給樓主建議: 去 我的領(lǐng)地 5d6d 的 proteus 論壇看看那里有很多 仿真實(shí)例,包括仿真圖 和 源碼

文章題目:c語言紅外測距傳感器函數(shù) 紅外線測距傳感器原理圖
轉(zhuǎn)載注明:http://m.rwnh.cn/article26/hiiojg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站ChatGPT、網(wǎng)站改版、商城網(wǎng)站網(wǎng)站建設(shè)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
阳春市| 无为县| 沂水县| 班玛县| 柘城县| 武乡县| 伊金霍洛旗| 垫江县| 临朐县| 罗甸县| 博野县| 启东市| 六盘水市| 徐水县| 邵阳市| 瑞昌市| 萍乡市| 嘉兴市| 前郭尔| 乌恰县| 肇州县| 毕节市| 桃园市| 福州市| 黑山县| 乌拉特中旗| 建宁县| 阿克苏市| 海原县| 隆安县| 桐梓县| 监利县| 鄂尔多斯市| 武汉市| 蒙阴县| 治县。| 吉首市| 建水县| 朔州市| 隆德县| 武穴市|