C8051F020集锦1

上传人:桔**** 文档编号:497127276 上传时间:2023-01-26 格式:DOC 页数:8 大小:30.50KB
返回 下载 相关 举报
C8051F020集锦1_第1页
第1页 / 共8页
C8051F020集锦1_第2页
第2页 / 共8页
C8051F020集锦1_第3页
第3页 / 共8页
C8051F020集锦1_第4页
第4页 / 共8页
C8051F020集锦1_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《C8051F020集锦1》由会员分享,可在线阅读,更多相关《C8051F020集锦1(8页珍藏版)》请在金锄头文库上搜索。

1、;本程序是A/D转换$INCLUDE(C8051F020.INC) TIMER1 DATA 7FH TIMER2 DATA 7EHORG 0000H LJMP MAIN ORG 73H LJMP T3ISR ORG 0B3HMAIN: MOV WDTCN, #0DEH MOV WDTCN, #0ADH ; 关看门狗 MOV OSCICN,#00010101B ;择内部时钟4MHZ MOV ADC0CF,#00011001B MOV ADC0CN,#11000000B MOV AMX0CF,#02h ;与AMX0SL配合选择AIN0.0为单端输入 MOV REF0CN,#03 MOV TMR3C

2、N,#00000010B MOV TMR3RLL,#0E0H MOV TMR3RLH,#0B1H MOV P1MDOUT,#0FFH MOV P1,#00H ; init segA-dp MOV P2MDOUT,#0FFH MOV P2,#0FFH ; init DIG COM MOV XBR2,#044H MOV DPTR,#200H MOV R3,#100 MOV A,TMR3CN ORL A,#4 MOV TMR3CN,A SETB EA MOV A,EIE2 ORL A,#01 MOV EIE2,A MOV AMX0SL,#00 SETB AD0BUSY SJMP $T3ISR: AD

3、:MOV A,TMR3CN ANL A,#7FH MOV TMR3CN,A AD1: MOV A, ADC0CN JNB ACC.5, AD1 CLR AD0INT MOV A, ADC0H MOV 21H,A MOVX DPTR, A INC DPTR MOV A, ADC0L MOV 20H,A CALL PWM MOVX DPTR, A INC DPTR ;MOV AMX0SL,#0 SETB AD0BUSY DJNZ R3,AD SJMP ENNENN:RETIPWM: MOV P1,#00 CALL DELAY1 MOV P1,#0FFH CALL DELAY2 RETDELAY1:

4、MOV TIMER1,#0FHDELAY_1MS1:MOV TIMER2,#9HDELAY_1MS2:;CLR A MOV A,#20HDJNZ ACC,$DJNZ TIMER2,DELAY_1MS2DJNZ TIMER1,DELAY_1MS1RETDELAY2:MOV TIMER1,#0FHDELAY_11MS1:MOV TIMER2,21HDELAY_11MS2:;CLR A MOV A,20HDJNZ ACC,$DJNZ TIMER2,DELAY_11MS2DJNZ TIMER1,DELAY_11MS1RET END;本程序是外部中断0和定时器0$INCLUDE(C8051F020.IN

5、C) ORG 0000h LJMP MAINORG 0003H LJMP ZD0ORG 000BH LJMP ZDORG 00BEHMAIN:MOV WDTCN,#0DEH MOV WDTCN,#0ADH ; 关看门狗 MOV OSCICN,#00000100B ; 设置内部晶振2mhz MOV XBR1,#06H ; 选择T0引脚连到P0.0,外部中断0连接到端口引脚P0.1 MOV XBR2,#40H ; 交叉开关使能 MOV P0MDOUT,#0FEH ; 选择P0.0 为开漏方式,其它为推拉方式 MOV P1MDOUT,#4 MOV CKCON,#00H ; T0定时时钟12分频 MO

6、V TMOD,#51H ; T0定时方式1,T1记数方式1 MOV TH1, #00H MOV TL1, #00H SETB TR1 MOV R0, #0 ; 定时100ms,循环100次,共10s Q3: MOV TH0, #0BEH ; 定时100ms 初值 MOV TL0, #0E6H MOV IE,#83H SETB EA SETB TR0 GG: CJNE R0,#2,EE CLR TR1 MOV r5,TH1 ; 定时时间到读出10秒内所计的脉冲个数 MOV r6,TL1 SJMP $EE: SJMP GGZD0: CLR EA ;重置定时器初值370ms CPL P1.2 ;输出

7、取反 ;SETB EA RETI ZD: INC R0 RETI END /*本实验采用T0作为计时器,T1作为计数器,选择T1引脚连到P0.0输入,在数码管显示。 */#include #define uchar unsigned char#define uint unsigned intvoid PORT_Init (void) XBR1 = 0x08; XBR2 = 0x40;/*使能交叉开关*/ P0MDOUT = 0xfe; P1MDOUT = 0xff; P2MDOUT = 0xff;void TIME0( void ) TH0 = 0XBE ; /定时100ms 初值 TL0 =

8、 0XE6 ; TR0 = 1 ; while(TF0=0); TF0=0 ; /定时100ms到void TIME1( void ) TH0 = 0Xfe ; /定时100ms 初值 TL0 = 0Xff ; TR0 = 1 ; while(TF0=0); TF0=0 ; /定时100ms到void XS(uint num) uint k,i,i1,i2,i3,j;uchar code tab=0x3f,0x06,0x9b,0x8f,0xa6,0xad,0xbd,0x07,0xbf,0xa7; i1=num/100; num=num%100; i2=num/10; i3=num%10;whi

9、le(1) k=0Xfb; /for(i=0;i10;i+) for(j=0;j1; /循环右移1位 P1=tabi2; i=tabi2; P2=k; TIME1(); k=k1; /循环右移1位 P1=tabi1; i=tabi1; P2=k; TIME1(); k=k1; /循环右移1位 k=0Xfb; i=i+1; /TIME0() ; main (void) uchar i,k; uint num,r1;WDTCN = 0xde;WDTCN = 0xad; /禁止看门狗定时器 OSCICN = 0x04; /内部振荡器,2MHZ /XBR1 = 0X08; /选择T1引脚连到P0.0 /XBR2 = 0x44; CKCON =0X00 ; /T0定时时钟12分频PORT_Init (); TMOD=0X51 ; /T0定时方式1,T1记数方式1 TH1=0X00 ; TL1=0X00 ; TR1 = 1 ; /打开T1计数 for (k=0;k10;k+) /定时1s TIME0() ; i=TH1; k=TL1; num=(TH1*0XFF+TL1)/18; num=num*60; XS(num);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号