历史上的今天
今天是:2025年04月15日(星期二)
2020年04月15日 | P1口外接8个LED,通过按键控制,实现左右移动的流水灯
2020-04-15 来源:eefocus
//用P1口外接8个LED,可以做成一个最常见的流水灯。
//灯光闪烁的时间间隔,可以使用软件延时,也可以使用定时器来控制。
//如果增加一个按键,则还可以控制灯的移动方向。
//电路如下:

//系统中,定时和按键,都采用了中断方式。即采用定时器0中断来控制延时时间,用外部中断0进行方向控制;
//通过按下按键,可以使左移、右移交替显示。
//为了练习C语言使用中断系统,控制软件采用C语言编制。
//程序如下:
//-------------------------------------------
#include #include unsigned char i = 0, temp; unsigned char bdata j; //在位寻址区定义字节变量 sbit j0 = j ^ 0; //定义位变量 //------------------------------------------- void main(void) { TMOD = 0x01; //设定T0定时方式1 TH0 = (65536 - 10000) / 256; //定时 TL0 = (65536 - 10000) % 256; TR0 = 1; ET0 = 1; //允许T0中断 PT0 = 1; //设定T0为高优先级 IT0 = 1; //外部中断输入下降沿有效 EX0 = 1; //允许X0中断 EA = 1; //开放总中断 temp = 0xfe; P1 = temp; while(1); } //------------------------------------------- void T0_int(void) interrupt 1 //每隔10ms执行一次 { TH0 = (65536 - 10000) / 256; //定时 TL0 = (65536 - 10000) % 256; i++; if(i >= 100) { i = 0; if(j0 == 0) temp = _crol_(temp, 1); if(j0 == 1) temp = _cror_(temp, 1); P1 = temp; } } //------------------------------------------- void X0_int(void) interrupt 0 using 1 { unsigned char k; j0 = ~j0; //改变运动方向 for(k = 200; k > 0; k--); //延时一会再退出,以避免抖动 } //=========================================================== 下面是用汇编语言编写的控制程序,效果与C语言相同。 ORG 0000H SJMP START ORG 0003H SJMP X0_INT ORG 000BH SJMP T0_INT ;------------------------------------------- START: MOV TMOD, #01H MOV TH0, #(65536 - 50000) / 256; //定时 MOV TL0, #(65536 - 50000) MOD 256; //定时 SETB TR0 SETB ET0 SETB IT0 SETB EX0 SETB PT0 SETB EA MOV R3, #20 MOV R2, #7FH MOV P1, R2 SJMP $ ;------------------------------------------- X0_INT: CPL F0 JNB P3.2, $ ;等待按键释放 RETI ;------------------------------------------- T0_INT: MOV TL0, #(65536 - 50000) MOD 256; //定时 MOV TH0, #(65536 - 50000) / 256; //定时 DJNZ R3, T0_END MOV R3, #20 MOV A, R2 JNB F0, DDD RL A SJMP EEE DDD: RR A EEE: MOV R2, A MOV P1, A T0_END: RETI ;------------------------------------------- END //===========================================================
上一篇:51单片机闪烁流水灯
史海拾趣
|
在作硬件之前,需要看的资料有: 1.芯片数据手册,描述该器件的引脚信号、片上资源、电气指标和机械特性(如封装等),在做硬件前必看(TMS320F281x数据手册SPRS174J) 2.某一系列DSP的CPU和指令集用户指南,描述该系列DSP的CPU结构、内部寄存器 ...… 查看全部问答> |
|
关于pxa270 wince5.0 系统使用sdio wifi (mavell 8686 芯片)的问题 使用sdio 接口,接上wifi 卡,系统能检测到wifi 卡,并能完成 MrvDrvInitialize ,弹出wifi的设置对话框后,能够检测到AP,但是始终链接不上:下面是调试信息,有没有什么建议『我摘取了从对话框弹出到链接一个AP不成功的信息』: ...… 查看全部问答> |
|
为什么可以把系统从挂起状态的设备不能通过DevicePowerNotify申请进入D3状态呢? 小弟看了windows mobile 5.0的文档,但是看得一头雾水,请各位大哥大姐指教,本人不胜感激!以下是mobile的部分文档: Devices that can wake the s ...… 查看全部问答> |
|
最近再做一个FPGA通过并口与PC机进行通信的实验:数据从FPGA传向PC机。给FPGA下载代码后,PC机接收不到数据,当打开示波器的一瞬间或者用示波器的探头地接触电路板的地时,PC机可以接收到数据! 我在网上看了一些资料,发现可能是“浮地”的问题, ...… 查看全部问答> |
|
光盘是《51单片机C语言开发详解》一书的配套光盘,内含书中各章节摘抄内容做得PPT和书中的源代码。PPT写得简介易懂,非常值得一读。我很想买到这本书,无奈书已停版,各大书店都买不到。… 查看全部问答> |




