《MCS-51单片机汇编语言编程实例ppt课件.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机汇编语言编程实例ppt课件.ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、例1方波产生任务:从P1.0引脚输出一个方波程序1:ORG0000HLOOP:CPL90HSJMPLOOP机器码0000B20001900002800003FC0004- -程序2:加软延时ORG0000HLOOP:CPL90HMOVR1 , #100MOVR0 , #100LOOP1:DJNZR0 , LOOP1DJNZR1 , LOOP1SJMPLOOP例2 跑马灯任务:D1,D2,D3循环亮灭,D1 D2D3 一个时间只有一个亮,每个1秒转换一次。程序1:ORG 0000HLOOP0:ORLP1 , #07H ; 全熄灭ANLP1 , #0FBH; D1亮CALLDT;延时ORLP1 ,
2、 #07H ;全熄灭ANLP1 , #0FDH ; D2亮CALLDT;延时ORLP1 , #07H ;全熄灭ANLP1 , #0FEH ; D3亮CALLDT;延时SJMP LOOP0DT:MOVR2 , #0FH;#15MOVR1 , #32H;#50MOVR0 , #0FFH;#255DT1:DJNZR0 , DT1DJNZR1 , DT1DJNZR2 , DT1RETT=(2 * ( 256*256*(R2-1) + 256*(R1-1) + R0+256*(R2-1) + R1+R2) +3+1)* (12/fosc) (256*256+256+1)R2+(256+1)R1+R0-(
3、256*256+2*256-2)=100000065793R2+257R1+R0=1066046 R2=15, R1=50, R0=255程序2ORG0000HLOOP: MOVA, #0FBHMOVP1 , A RRACALLDTMOVP1 , A RRACALLDTMOVP1 , A CALLDTSJMPLOOP程序3ORG0000HLOOP: MOVA, #0FBHMOVR0, #3LOOP0:MOVP1 , A RRACALLDTDJNZR0, LOOP0SJMPLOOP7行程序4ORG0000HLOOP0:MOVR7 , #0 LOOP1: ORLP1 , #07H ;全熄灭LOOP
4、2:CJNER7 , #0 , LOOP3INCR7ANLP1 , #0FBH ; D1亮SJMPLOOP5LOOP3:CJNER7 , #1 , LOOP4INCR7 ANLP1 , #0FDH ; D2亮SJMPLOOP5LOOP4:CJNER7 , #02 , LOOP0MOVR7 , #0 ANLP1 , #0FEH ; D3亮LOOP5:CALLDT ;延时SJMPLOOP1例3步进电机任务1:初始化步进电机nSTART: ;初始化nMOV DPTR,#30H;表基址nL5: MOV R7, #0H;百位nL9:MOV R6, #0H;十位 nL10: MOV R5, #0H;个位n
5、MOV IE,#82H ;全局中断,T0中断允许nORL IP,#2H ;逻辑或,T0中断优先级高nMOV TMOD,#11H ;定时器方式字,T1和T0都工作在方式1,16位的计数器GATE等于0,不受外部控制nP4 EQU 0C0H ;声明P4地址nMOV P4,#0FFHn P4SW EQU 0BBH ;声明P4SW寄存器的地址n MOV P4SW,#70Hn SETB p1.1n SETB P1.4 ;CE2置高n SETB P1.3 ;CE1置高例3步进电机任务2:定时器中断实现演示程序nTIME: CJNE R2,#0,TIM0 ;R2不等于0则是慢速,跳转 n ;快速,60转/分
6、n MOV TH0,#5BHn MOV TL0,#0F0Hn SETB TR0n MOV R1,#0HnTIM1: CJNE R1,#1H,TIM1n SJMP TIM2n ;慢速,10转/分nTIM0: MOV R3,#2HnTIM4: MOV TH0,#0Hn MOV TL0,#0Hn SETB TR0n MOV R1,#0H例3步进电机任务3:定时器中断实现延时程序nTIM3: CJNE R1,#1H,TIM3n DJNZ R3,TIM4n MOV TH0,#2FHn MOV TL0,#70Hn SETB TR0n MOV R1,#0HnTIM5: CJNE R1,#1H,TIM5nTI
7、M2: RETnT0IN:;中断程序n MOV R1,#1HnRETI;中断返回例3步进电机任务4:开关设置nNEXT:n JB P3.7,OPP ;如果P3.7等于1则转移(开关S2按下)n MOV R0,#00101101B;按下,顺时针n LJMP S1nOPP: MOV R0,#01111000B;松开,逆时针nS1:n JB P3.6,SPDn MOV R2,#0H ;未按下,快速n LJMP L1nSPD: MOV R2,#1H ;按下,慢速例3步进电机任务:主程序nL1:MOV A,R0nRLC A ;带进位的循环左移操作nMOV P3.2,C ;IN1nRLC AnMOV P1.0,C ;IN2nMOV R0,AnLCALL LEDnLCALL TIMEnMOV A,R0nRLC AnMOV P3.2,CnRLC AnMOV P1.0,CnMOV R0,AnLCALL LEDnLCALL TIME例3步进电机任务:主程序nMOV A,R0n RLC AnMOV P3.2,CnRLC AnMOV P1.0,CnMOV R0,AnLCALL LEDnLCALL TIMEnMOV A,R0nRLC AnMOV P3.2,CnRLC AnMOV P1.0,CnMOV R0,AnLCALL LEDnLCALL TIMEn LJMP NEXT
限制150内