永发信息网

c8051f330单片机 要控制一个小灯 编程要它亮灭 怎么接啊

答案:2  悬赏:10  手机版
解决时间 2021-01-21 11:45
c8051f330单片机 要控制一个小灯 编程要它亮灭 怎么接啊
最佳答案
给你一个定时器2实现小灯亮灭的程序。 
接法为:把一个电阻(1K以下,100欧以上)接在P1.3端口上,电阻的另一端接发光二极管的正极,发光二极管的负极接地即可。不知道是所说的灯是什么灯,如果是电压高的,还需要通过继电器或者是三极管做转换。 
//----------------------------------------------------------------------------- 
// Includes 
//----------------------------------------------------------------------------- 
#include  // SFR declarations 
//----------------------------------------------------------------------------- 
// 16-bit SFR Definitions for 'F33x 
//----------------------------------------------------------------------------- 
sfr16 TMR2RL = 0xca; // Timer2 reload value 
sfr16 TMR2 = 0xcc; // Timer2 counter 
//----------------------------------------------------------------------------- 
// Global CONSTANTS 
//----------------------------------------------------------------------------- 
#define SYSCLK 24500000 / 8 // SYSCLK frequency in Hz 
sbit LED = P1^3; // LED灯的引脚 
//----------------------------------------------------------------------------- 
// Function PROTOTYPES 
//----------------------------------------------------------------------------- 
void SYSCLK_Init (void); 
void PORT_Init (void); 
void Timer2_Init (int counts); 
void Timer2_ISR (void); 
//----------------------------------------------------------------------------- 
// MAIN Routine 
//----------------------------------------------------------------------------- 
void main (void) { 
PCA0MD &= ~0x40; //关闭看门狗 
SYSCLK_Init (); 
PORT_Init (); 
Timer2_Init (SYSCLK / 12 / 10); // 初始化定时器2为10Hz 
EA = 1; // 使能全局中断 
while (1) 
{ // 循环 


//系统初始化 
void SYSCLK_Init (void) 

OSCICN = 0x80; // 设置内部时钟 
RSTSRC = 0x04; // 使能时钟失效检测 

//初始化IO口 
void PORT_Init (void) 

XBR0 = 0x00; 
XBR1 = 0x40; // 允许交叉开关 
P1MDOUT |= 0x08; // LED灯的引脚推挽输出 

//----------------------------------------------------------------------------- 
//定时器2初始化,设置为16bit重新装载方式 
void Timer2_Init (int counts) 

TMR2CN = 0x00; 
CKCON &= ~0x60; 
TMR2RL = -counts; // Init reload values 
TMR2 = 0xffff; // 设置重新装载的计数值 
ET2 = 1; // 使能定时器2中断 
TR2 = 1; // 启动定时器 

//中断服务程序,当定时时间到达后,LED灯会亮或者是灭。 
void Timer2_ISR (void) interrupt 5 

TF2H = 0; // 清除中断标志 
LED = ~LED; // 改变LED灯的状态 
}

全部回答
二级管串一个电阻,一边接电源,一边接单片机端口
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
舌头锯齿壮什么原因
为什么会起一个大包
为了你张瑶瑶结局是什么 多年的等待终究不会
年高考320分可以上什么学阕
为什么我买的酿酒曲用水化开后有沙粒
单选题国家测绘局对大峡谷进行实地测量,测得
成吉思汗成立哪个朝代是哪个朝代的皇帝
鲁迅把《昆虫记》奉为 的楷模
下列名言与右图漫画启示的哲理相近的是A. 泰
必有(德)字求取厝名及对联
青岛共有多少高中,分别是什么?
美苏争霸的根本原因是什么?
中国历史上最早年代的电视剧有哪些?
(50一4x)/3=14 列方程
明天我就开始我得高四生活了 听说苦不堪言 哈
推荐资讯
我的巴西龟怎么了?最近一直不吃东西。背后龟
WIN7怎么用BT3
C语言中,=和==到底有什么区别,=要什么时候
三星电视UA55HU7800怎么连接wifi
星群夏桑菊是不是效果比较好?
不要问国家能为你做什么,而要问你能为国家做
已知豌豆的红花对白花是显性。下列哪组亲本组
推荐一下法家书籍
iphone4能退回ios6吗
车辆挂假牌子如何处罚
海信电视led50k310x3d有投屏功能吗
梦幻西游109一线装备下来得多少钱?DT什么要
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?