资源描述:
《51单片机实用程序库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、51单片机实用程序库 4.1流水灯程序介绍:利用P1口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。程序实例(LAMP.ASM)ORG0000HAJMPMAINORG0030HMAIN:9MOVA,#00HMOVP1,A;灭所有的灯MOVA,#11111110BMAIN1:MOVP1,A;开最左边的灯ACALLDELAY;延时RLA;将开的灯向右边移AJMPMAIN;循环DELAY:MOV30H,#0FFHD1:MOV31H,#0FFHD2:DJNZ31H,D2DJNZ30H,D1RETEND4.2方波输出程序介绍:P1.0口输出
2、高电平,延时后再输出低电平,循环输出产生方波。实际应用中例如:波形发生器。程序实例(FAN.ASM):ORG0000HMAIN:;直接利用P1.0口产生高低电平地形成方波//////////////ACALLDELAYSETBP1.0ACALLDELAY10CLRP1.0AJMPMAIN;//////////////////////////////////////////////////DELAY:MOVR1,#0FFHDJNZR1,$RETEND五、定时器功能实例5.1定时1秒报警程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1次,以达到定时报警的目的。实际应用例如:定时报警器。
3、程序实例(DIN1.ASM):ORG0000HAJMPMAINORG000BHAJMPDIN0;定时器0入口MAIN:TFLAGEQU34H;时间秒标志,判是否到50个0.2秒,即50*0.2=1秒MOVTMOD,#00000001B;定时器0工作于方式1MOVTL0,#0AFHMOVTH0,#3CH;设定时时间为0.05秒,定时20次则一秒11SETBEA;开总中断SETBET0;开定时器0中断允许SETBTR0;开定时0运行SETBP1.0LOOP:AJMPLOOPDIN0:;是否到一秒////////////////////////////////////////INCC:INCT
4、FLAGMOVA,TFLAGCJNEA,#20,REMOVTFLAG,#00HCPLP1.0;//////////////////////////////////////////////////RE:MOVTL0,#0AFHMOVTH0,#3CH;设定时时间为0.05秒,定时20次则一秒RETIEND5.2频率输出公式介绍:f=1/ts51使用12M晶振,一个周期是1微秒使用定时器1工作于方式0,最大值为65535,以产生200HZ的频率为例:200=1/t:推出t=0.005秒,即5000微秒,即一个高电12平或低电平的时间为2500微秒。这样,定时值应设为65535-2500=630
5、35,将它转换为十六进制则为:F63B。具体程序请看f200.asm频率递增:200HZ:63035:F63B250HZ:63535:F82F300HZ:63868:F97C5.3200HZ频率输出程序介绍:利用定时器定时,在P1.0口产生200HZ的频率输出。实际应用例如:传感器前级推动。程序实例(F200.ASM):ORG0000HAJMPMAINORG001BHAJMPDIN0MAIN:CLRP1.0;产生一个低电平,实际上是从p1.0口产生频率MOVTMOD,#00010000B;定时器1工作于方式0MOVTH1,#0F6HMOVTL1,#3BH;频率产生的时间,详细请见频率公式
6、SETBEA;开总中断13SETBTR1;开定时器1运行SETBET1;开定时器1允许LOOP:AJMPLOOP;无限循环DIN0:CPLP1.0;产生一个高电平,下次来就是低电平(因为取反),一个高电平和一个低电平形成一个周期MOVTH1,#0F6HMOVTL1,#3BH;重置频率产生时间RETI;返回END5.4200——250HZ变化频率输出程序介绍:利用定时器定时时间的变化,由P1.0口产生200——250HZ变化的频率。实际应用例如:传感器前级推动、频率发生器。程序实例(F250.ASM):ORG0000HAJMPMAINORG001BHAJMPDIN1MAIN:;定义频率20
7、0和300//////////////////////////////////F2HEQU30HF2LEQU31HF3HEQU32HF3LEQU33H14;//////////////////////////////////////////////////;定义频率保持初值//////////////////////////////////MOVR1,#50MOVR2,#02H;///////////////////////////