完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
利用定时/计数器T0产生定时时钟,由P1口控制8个发光二极管。
编一个程序,使8个指示灯依次一个一个闪动,闪动频率为10次/秒 (8个灯依次亮一遍为一个周期)。设晶振频率为12MHz。 代码: 1 /********************************************************* 利用定时/计数器T0产生定时时钟,由P1口控制8个发光二极管。 编一个程序,使8个指示灯依次一个一个闪动,闪动频率为10次/秒 (8个灯依次亮一遍为一个周期)。 **********************************************************/ #include #include #define uint unsigned int #define uchar unsigned char uchar num,leds; void main() { leds=0xfe;//初始化 位变量leds num=0;//初始化 计数变量num EA=1;//打开特殊功能寄存器IE内的总开关EA ET0=1;//打开特殊功能寄存器IE内的开关ET0 TMOD=0X01;//0000 0001,低四位,GATE=0,C/T=0,M1M0=01;选用中断源T0,方式1,16位定时器 /*TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能。*/ TH0=(65536-50000)/256;//初始化,装填初值 TL0=(65536-50000)%256; /*这里是从15536(=65536-50000)位置开始计数,逐次加1,直到65535位置即将溢出,再加1,回到0 共50000次"加1",机器周期为1us时,每次加1耗时1us,全程耗时50ms*/ TR0=1;//启动定时器 while(1) { //经历100ms(=2*50ms) if(num==2) { P1=leds;//点亮对应位的led } //再经历100ms(=(4-2)*50ms) if(num==4) { num=0;//初始化计数变量 P1=0xff;//所有位led熄灭 leds=_crol_(leds,1);//按位循环左移一位,1111 1110-->1111 1101-->1111 1011 } } } //中断函数 中断源:"定时/计数器0(T0)",代号1 void time0() interrupt 1 { TH0=(65536-50000)/256;//初始化,装填初值 TL0=(65536-50000)%256; num++;//计数变量自增,num每增加1,耗时50ms(=50000*1us) } |
|
|
|
只有小组成员才能发言,加入小组>>
3126 浏览 9 评论
2823 浏览 16 评论
3337 浏览 1 评论
8706 浏览 16 评论
3927 浏览 18 评论
9544浏览 3评论
877浏览 3评论
447浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
451浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2174浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 22:06 , Processed in 1.015237 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号