ZKX's LAB

编写一段程序控制8盏发光led 如何用汇编语言编写一段用开关控制8个灯的亮暗的程序

2020-07-19知识10

如何用汇编语言编写一段用开关控制8个灯的亮暗的程序 用单片机的汇编来编程,思路是编写一个占空比可调的子程序,8个灯用8个IO口控制,通过设置8个IO口的输出波形的占空比不同从而控制8个灯的亮暗.用汇编语言编写一段程序,用单片机控制八只发光二极管左点亮2次,再右循环点亮2次 基本要求:1、使用P1口作为信号输出口。 2、延时时间为1s。 3、延时程序可通过定时器中断或指令循环来实现。 4、编写程序的首地址设为4000H。 5、可使用仿真软件proteus完成设计 新闻 网页 微信 知乎 图片 视频 明医 英文 问问 更多? 我要提问 问题分类 特色 搜狗指南 问豆商城 。? 2020SOGOU.COM 京ICP证050897号急急急急。有追加,, 把P1口连接8只发光二极管,要求编写一程序,模拟LED按时序控制显示 ORG 0000HAJMP MAINORG 000BHAJMP INT_T0ORG 0030HMAIN:MOV IE,#60H;这里有问题,想开定时器0中断得为1000 0010B,也就是82H.或者干脆就用SETB EA,SETB ET0代替MOV TMOD,#01HMOV TH0,#4CH;这里初值也不对,你想定时50ms,初值应该是:65536-50000=15536(16进制是3CB0H)MOV TL0,#00HMOV R0,#00HMOV R1,#20SETB TR0SETB ET0SETB EASJMP$INT_T0:PUSH ACCPUSH PSWPUSH DPLPUSH DPHCLR TR0MOV TL0;这里没写全,需要重新赋初值MOV TH0SETB TR0DJNZ R1,EXITMOV R1,#20MOV DPTR,#TABMOV A,R0MOV A,@A+DPTRMOV P1,AINC R0ANL R0,#07HEXIT:POP DPHPOP DPLPOP PSWPOP ACCRETITAB:DB 05H,0AH,50H,0A0HDB 55H,0AAH,0FFH,0HENDP1作为输出口,P1.0至P1.7接8个发光二极管,要求编写程序实现如下功能:8个发光二极管依次亮灭并每盏灯点亮 编程实现对 8 个 LED 的输出控制 将实验箱中的 8255 片选信号连接到 218H~21FH,将 8255 的 4 个寄存器地址(A、B、C 端口及控制字寄存器端口)设置为 218H~21BH。将 8255 的端口 A 的 8 个引脚:PA0~PA7 与 8 个 LED 对应相连,然后打开实验箱电源,最后编程对 8 个 LED 进行显示控制。程序清单:CODE SEGMENTASSUME CS:CODESTART:MOV DX,21BHMOV AL,80HOUT DX,AL;工作方式初始化MOV DX,218HMOV AL,0FEH;设置输出数据,即显示模式MOV CX,80;设置循环次数LN:OUT DX,ALROL AL,1CALL DELAY;调用延迟程序LOOP LNMOV AH,4CHINT 21H;dosDELAY PROC;延迟子程序PUSH CXMOV BX,2000A0:MOV CX,3000A1:LOOP A1DEC BXJNZ A0POP CXRET DELAYENDPCODE ENDSEND START用单片机编写一个程序: 要求①使用程序控制8盏灯 要求②当L1亮时,其余灯都不亮,其它灯同理 要求 uchar i;while(1){for(i=0;i;i+){P0=1;delay_ms(500);}for(i=0;i;i+){P0=0x80>;>;i;delay_ms(500);}}按如下要求编写程序:1.p1口连接8个led灯,程序开始工作后,8个灯按照低4位亮、高4位灭,并间隔0.5s交替闪 #includeunsigned char count;void init()/初始化程序{P1=0xf0;给P1口赋值TMOD=0X01;定时器0的工作方式1TH0=(65536-50000)/256;50ms赋初值TL0=(65536-50000)%256;EA=1;开总中断ET0=1;开定时器0中断TR0=1;启动定时器0}void main()/主程序{init();调用初始化程序while(1)/大循环{}}void timer0()interrupt 1/定时器0中断程序{TH0=(65536-50000)/256;重新赋初值TL0=(65536-50000)%256;count+;中断次数计数器if(count=10)/10次说明0.5s时间到{count=0;清零重新计数P1=~P1;0.5s闪烁}}用定时器定时的方法控制8个LED流水灯,使流水灯循环流动点亮,时间间隔为1秒。1设置IE和TMOD的值2编写程序 方法有很多的,给你一百个,你可以度调试一下,你可以通过不同的晶振去计算定问时器初值,如果你懂定答时器这部分很好调通的includeincludeunsigned char i;void main(){TMOD=0x00;TH1=0x3c;TL1=0xb0;EA=1;ET1=1;TR1=1;while(1){if(i=20){i=0;下面回写你要处理的的其他程序,你只要了定时答1s。}}}void a(void)interrupt 3{unsigned char i;TH1=0x3c;TL1=0xb0;i+;}

#数字控制

随机阅读

qrcode
访问手机版