注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 |
首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 |
选择分类:当前分类——学单片机 相关联或者相类似的文章: 三十分钟一个小时学会单片机(9045) 什么是单片机?单片机有什么用? (8723) 如何用STC板将代码烧录进IC(8681) 怎样安装AT51编程板的USB转串口软件?(8206) 送给单片机爱好者——LED在线编码器(1814) 送给单片机爱好者——LED点阵在线编码器(1544) 单片机系统中的汉字显示(1492) 带语音报数功能的抢答器(1489) 用VB进行串口实时数据采集(1347) 用AT89C2051设计超声波测距仪(1171) 小小电子闹钟 生活学习良伴(1165) DS1820测温原理(1129) 几句代码实现控制摄像头(转)(1117) STC单片机选型指南(1111) 自制PIC单片机编程器(1105) USB转串口芯片CH340(1010) 快速学习单片机之黄金机会!(1010) 告戒购单片机开发实验板初学者(970) 新款实用旋转LED显示屏A(890) 使用市售 USB转RS232串口与PLC通信的测试报告 (881) 首页 前页 后页 尾页 本站推荐: | ★六位数显电子钟加24路输出 org 00h jmp con ORG 03H JMP TE0 ORG 0BH JMP TT0 ORG 13H JMP TE1 ORG 1BH JMP TT1 ORG 23H call out24 con: MOV TMOD,#00010010B;T0工作在8位自动重装计数器模式 mov th0,#8 setb tr0 setb et0 setb et1 setb ea mov 3fh,#1;定时总路数,默认为第1路 ;mov 92h,#11111111b;大电流输出 ;mov 0b2h,#11111111b;大电流输出 mov 39h,#00;工作模式0=走时模式1=校时模式2=定时模式3=误差模式 mov r2,#0;设定默认的闪动模式 mov r1,#15;设定长按键的时间 mov r3,#30;设定不按键的最长时间 mov 5bh,#126;设定响铃的最短时间 mov a,3eh cjne a,#51,setup jmp main setup:;冷启动时才加载默认值 mov 36h,#12;时默认值 mov 37h,#59;分默认值 mov 38h,#40;秒默认值 clr 5ah;设置是否闹时 clr 59h;设置是否整点闹时 setb 58h;设置是否秒点闹时 mov r0,#7fh;定时默认值24:30 dsmr: mov @r0,#24 inc r0 mov @r0,#30 inc r0 cjne r0,#0ffh,dsmr mov r0,#7fh mov @r0,#13 inc r0 mov @r0,#01 inc r0 mov @r0,#13 inc r0 mov @r0,#03 inc r0 main:mov 3eh,#51 call clock call cup call hled call sound MOV 5CH,#10 nop nop nop nop nop djnz 3eh,$ ;djnz 5ch,$-8 call disp ;LED数码显示 call key call run jmp main tt0: push acc push psw ;inc 60h ;mov a,60h ;cjne a,#6,t0end ;mov 60h,#0 inc r7 cjne r7,#254,t0end mov r7, #86 setb 55h jnb 5fh,t0end;是否需要校正 clr 5fh;校正过清除标志 mov a,r7 jb 5eh,jias subb a,55h jmp wcend jias:add a,55h wcend:mov r7,a t0end:pop psw pop acc reti clock: jnb 55h,eeeee;检查中断计数标志 clr 55h cpl 56h jnb 56h, eeeee;一次延时 cpl 57h jnb 57h, eeeee;二次延时 ;cpl p3.7 cpl p0.0 cpl p0.1 jnb p0.0, eeeee;三次延时 inc 38h ;时钟程序秒加1 call out24 mov r0,5ah;看现在有没有响铃中 cjne r0,#0,ssound;如果正逢闹铃则秒不响 jnb 58h,ssound;如果禁止秒响则秒不响 mov 5ah,#1;是否秒响 ssound:mov r6,38h;检查60秒就要分加1 cjne r6,#60,eeeee mov 38h,#0 ck1:inc 37h;分是整数,先校正时间 setb 5fh;每分钟校正一次数据,高电平表示可以校正 mov r6,37h;检查分是否到了60 cjne r6,#60,cend mov 37h,#0 ;mov r0,5ah;看现在有没有响铃中 ;cjne r0,#0,ck2;如果正逢闹铃则秒不响 jb 59h,ck2;如果禁止整点响则不响 mov 5ah,#25 ck2:inc 36h mov r6,36h;检查小时是否到了24 cjne r6,#24,cend mov 36h,#0 cend: jb 5ah,eeeee;如果禁止响闹就跳到结尾,后面为比较定时时间 mov r0,#7eh;装入定时初始值,7FH装入的是第一个小时值 dschk: inc r0;检查定时 mov a,@r0 inc r0 cjne r0,#0feh,dschk0; jmp eeeee dschk0:cjne a,36h,dschk;小时是否相等,小时相等就检查分钟 mov a,@r0 cjne a,37h,dschk;分钟也相等的话就装入闹时值,否则检查下一个时间 mov 5ah,#250 eeeee:ret tt1:reti te0:reti te1:reti cup: mov 3ah,36h mov 3bh,37h mov 3ch,38h mov a,39h cjne a,#20,ms1up;是否要显示定时路数和时间 mov 3ah,3fh mov a,#7dh add a,3fh add a,3fh mov r0,a mov 3bh,@r0 inc r0 mov 3ch,@r0 mov a,39h ms1up:cjne a,#30,msup;是否要示误差校正时间 mov 3ch,55h msup:mov a,3ch mov b,#10 div ab ;将秒计算后送入显示缓存 mov 30h,b mov 31h,a mov a,3bh mov b,#10 div ab ;将分计算后送入显示缓存 mov 32h,b mov 33h,a mov a,3ah mov b,#10 div ab ;将小时计算后送入显示缓存 mov 34h,b mov 35h,a ret hled: mov a,39h cjne a,#10,ms1 jb 56h,ms1 cjne r2,#0,h1 mov 35h,#11 mov 34h,#11 h1:cjne r2,#1,h2 mov 33h,#11 mov 32h,#11 h2:cjne r2,#2,ms1 mov 31h,#11 mov 30h,#11 ms1:cjne a,#20,ms2 jnb 57h,ms2 cjne r2,#0,h21 mov 35h,#11 mov 34h,#11 h21:cjne r2,#1,h22 mov 33h,#11 mov 32h,#11 h22:cjne r2,#2,ms2 mov 31h,#11 mov 30h,#11 ms2:cjne a,#30,hend jb 5eh,h31 mov 35h,#12 mov 34h,#12 mov 33h,#12 mov 32h,#12 jmp hend h31: mov 35h,#13 mov 34h,#13 mov 33h,#13 mov 32h,#13 hend:ret disp: anl p0,#00000011b mov p1,#0ffh cjne r5,#6,ds0;r5等于显示的当前LED,r5的值不能随意改变 mov r5,#0 ds0:inc r5 cjne r5,#1,ds1 setb p0.7 mov a,30h call ledtab ds1:cjne r5,#2,ds2 setb p0.6 mov a,31h jmp ledtab ds2:cjne r5,#3,ds3 setb p0.5 mov a,32h jmp ledtab ds3:cjne r5,#4,ds4 setb p0.4 mov a,33h jmp ledtab ds4:cjne r5,#5,ds5 setb p0.3 mov a,34h jmp ledtab ds5:cjne r5,#6,edisp setb p0.2 mov a,35h jmp ledtab edisp: ret ledtab: nokey: ;jb p1.7, kk ;检查按键是否按下 ;mov 40h,r5 ;按键按下取键值 kk:mov dptr,#table movc a,@a+dptr cpl a mov p1,a jmp edisp sound:mov r0,5ah cjne r0,#0,yyyy jmp soundend yyyy: ;clr p1.7 djnz 5bh,soundend mov 5bh,#126 dec 5ah soundend:ret key: cpl p2.0 jb p2.0,kend mov 40h,#0 k0:jb p3.2,k1 mov 40h,#6 k1:jb p3.3,k2 mov 40h,#4 k2:jb p3.4,k3 mov 40h,#3 k3:mov r6,40h cjne r6,#0,kset;不等于0说明有按键按下,分别设定有键无键的最长时间 mov r1,#20;设定长按键时间一般为2-3秒 clr 51h;按键放开中 jmp ksetend kset:mov r3,#200;设定不按键的最长等待时间,一般为10-30秒 setb 51h;按键中 mov a,39h add a,r6 mov r4,a; ksetend:djnz 56h,kend;检查长按键延时用 mov 56h,#25;根据时钟频率来确定延时程度 cjne r6,#0,long1;不等于0说明有按键按下,分别求出有键按和无键按的时间 djnz r3,kend mov 39h,#0;10秒钟长时间没有键按下时模式回到正常走时 ;clr p3.7 jmp kend long1:djnz r1,kend mov a,39h add a,#10 mov 39h,a;有按键长按2秒以上模式加10 mov r2,#0 ;setb p3.7 kend: kendd: ret skey:jmp kend run:jb 51h,gotoend;按键是否放开,不放开不执行按键程序 jmp run000 gotoend:jmp runend run000:cjne r4,#6,run011;定时闹功能 clr 58h cpl 5ah mov 5ah,#0 jb 5ah,run011 mov 5ah,#1 run011:cjne r4,#3,run012;整点闹功能 clr 58h cpl 59h mov 5ah,#0 jb 59h,run012 mov 5ah,#1 run012:cjne r4,#4,run0;秒闹功能 cpl 58h mov 5ah,#0 run0:cjne r4,#16,run1;校时模式 inc r2;调校时分秒三种情况选择 cjne r2,#3,run1 mov r2,#0 run1:cjne r4,#13,run2;校时加数模式 cjne r2,#0,jj1 inc 36h mov a,36h cjne a,#24,jj1 mov 36h,#0 call out24 jj1:cjne r2,#1,jj2 inc 37h mov a,37h cjne a,#60,jj2 mov 37h,#0 jj2:cjne r2,#2,run2 inc 38h mov a,38h cjne a,#60,run2 mov 38h,#0 run2:cjne r4,#14,run3;校时减数模式 cjne r2,#0,jg1 dec 36h mov a,36h cjne a,#255,jg1 mov 36h,#23 call out24 jg1:cjne r2,#1,jg2 dec 37h mov a,37h cjne a,#255,jg2 mov 37h,#59 jg2:cjne r2,#2,run3 dec 38h mov a,38h cjne a,#255,run3 mov 38h,#59 run3:cjne r4,#26,run4;定时模式 inc r2;定时模式的R2表示选择路数、设定小时和分钟的情况 cjne r2,#3,run4 mov r2,#0 run4:cjne r4,#23,run5;定时模式的加模式 dsjia:cjne r2,#0,dsjia1 inc 3fh mov a,3fh cjne a,#65,dsjia1;最大的定时路数 mov 3fh,#1 dsjia1:cjne r2,#1,dsjia2 inc 3bh mov a,3bh cjne a,#25,dsup11 mov 3bh,#0 dsup11:call dsup dsjia2:cjne r2,#2,run5 inc 3ch mov a,3ch cjne a,#60,dsup22 mov 3ch,#0 dsup22:call dsup run5:cjne r4,#24,run6;定时模式的减模式 dsjian:cjne r2,#0,dsjian1 dec 3fh mov a,3fh cjne a,#0,dsjian1 mov 3fh,#64;最大的定时路数 dsjian1:cjne r2,#1,dsjian2 dec 3bh mov a,3bh cjne a,#0ffh,dsup33 mov 3bh,#24 dsup33:call dsup dsjian2:cjne r2,#2,run6 dec 3ch mov a,3ch cjne a,#0ffh,dsup44 mov 3ch,#59 dsup44:call dsup run6:cjne r4,#36,run7;误差模式 ;inc r2;误差模式的调快还是调慢模式 cpl 5eh ;cjne r2,#2,run7 ;mov r2,#0 ;clr 5eh run7:cjne r4,#33,run8;误差模式 inc 55h;误差系数的加法 mov a,55h cjne a,#81,run8 mov 55h,#0 run8:cjne r4,#34,run9;误差模式 dec 55h;误差系数的减法 mov a,55h cjne a,#255,run9 mov 55h,#80 run9:cjne r4,#46,run10;响铃模式 mov 39h,#0 run10:cjne r4,#43,run11;响铃模式 mov 39h,#0 run11:cjne r4,#44,run12;响铃模式 mov 39h,#0 run12:cjne r4,#56,run13;到正常模式 mov 39h,#0 run13:cjne r4,#53,run14;到正常模式 mov 39h,#0 run14:cjne r4,#54,rund;到正常模式 mov 39h,#0 rund:mov r4,#0 runend:ret dsup:;保存定时时间 mov a,#7dh add a,3fh add a,3fh mov r0,a mov @r0,3bh inc r0 mov @r0,3ch ret table:db 00111111b,00000110b,01011011b,01001111b,01100110b,01101101b,01111101b db 00000111b,01111111b,01101111b,00000000b,00000000b,01000000b,01001001b;abcdefgh分别对应01234567 out24: mov 45h,#0 mov 46h,#0 mov 47h,#0 mov a,36h out0:cjne a,#0,out1 mov 45h,#1b out1:cjne a,#1,out2 mov 45h,#10b out2:cjne a,#2,out3 mov 45h,#100b out3:cjne a,#3,out4 mov 45h,#1000b out4:cjne a,#4,out5 mov 45h,#10000b out5:cjne a,#5,out6 mov 45h,#100000b out6:cjne a,#6,out7 mov 45h,#1000000b out7:cjne a,#7,out8 mov 45h,#10000000b out8:cjne a,#8,out9 mov 46h,#1b out9:cjne a,#9,out10 mov 46h,#10b out10:cjne a,#10,out11 mov 46h,#100b out11:cjne a,#11,out12 mov 46h,#1000b out12:cjne a,#12,out13 mov 46h,#10000b out13:cjne a,#13,out14 mov 46h,#100000b out14:cjne a,#14,out15 mov 46h,#1000000b out15:cjne a,#15,out16 mov 46h,#10000000b out16:cjne a,#16,out17 mov 47h,#1b out17:cjne a,#17,out18 mov 47h,#10b out18:cjne a,#18,out19 mov 47h,#100b out19:cjne a,#19,out20 mov 47h,#1000b out20:cjne a,#20,out21 mov 47h,#10000b out21:cjne a,#21,out22 mov 47h,#100000b out22:cjne a,#22,out23 mov 47h,#1000000b out23:cjne a,#23,outend mov 47h,#10000000b outend: mov scon,#00h clr ti mov a,45h mov sbuf,a jnb ti,$ clr ti mov a,46h mov sbuf,a jnb ti,$ clr ti mov a,47h mov sbuf,a jnb ti,$ ret end 1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。 2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! |
本站协议 |
版权信息 |
关于我们 |
本站地图 |
营业执照 |
发票说明 |
付款方式 |
联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102 E-mail:51dz$163.com($改为@);Tel:(0755)27947428 工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389 |