找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5817|回复: 1
收起左侧

全彩LED合集-红外遥控全彩LED控制器制作

[复制链接]
ID:90014 发表于 2015-9-15 22:05 | 显示全部楼层 |阅读模式
【第八个程序-红外遥控全彩LED控制器】

原理图





乐云兄  辛苦了, 来顶一下。
还缺一个亮度加减或者是渐变速度加减功能没有加进去哦


  1. //////////////////////////////////////
  2. C语言
  3. //////////////////////////////////////
  4. //*******************************************************************************************/
  5. //* 红外遥控LED R-G-B全彩控制器程序 */
  6. //*遥 控 器:市面上通用24键超薄带单色指示遥控器,功能控制器 FLASH STROBE FADE SMOOTH */
  7. //*单片机型号:STC90C52RC PWM输出端口:R=P1.3 G=P1.4 B=1.5 遥控接收头(HS0038)P3.2 */
  8. //*程序作者 : 高山云先生 2012年3月31日 重庆 */
  9. //*程序版本 :VER:2.0 */
  10. //*程序功能 :本版本程序在原VER:1.0 VER:1.1 VER:1.2的基础上增加了EEROM断电数据记忆功能, */
  11. //* watchdog_timer看门狗定时器功能,确保程序跑飞时自动复位。 */
  12. //*******************************************************************************************/
  13. //*******************************************************************************************/

  14. #include "STC90.h"
  15. #include < intrins.h >
  16. #define uchar unsigned char
  17. #define uint unsigned int
  18. #define led_port P1

  19. sbit IR_RE = P3^2;
  20. sbit led_r = P1^3;
  21. sbit led_g = P1^4;
  22. sbit led_b = P1^5;
  23. sbit led_wd = P1^7;


  24. sbit K1 =P3^0 ; //增加键
  25. sbit K2 =P3^1 ; //减少键
  26. sbit BEEP =P3^7 ; //蜂鸣器
  27. uchar temp,temp1;
  28. bit k=0; //红外解码判断标志位,为0则为有效信号,为1则为无效
  29. bit Flag2;
  30. uchar date[4]={0,0,0,0}; //date数组为存放地址原码,反码,数据原码,反码
  31. uint lade_1,lade_2,lade_3,lade_4;
  32. uint num;
  33. uchar date_ram,ee_temp,ee_temp1;
  34. uchar WDT_NUM=0;

  35. uchar const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567
  36. uchar code seg[]={7,6,5,4,3,2,1,0};//分别对应相应的数码管点亮,即位码
  37. unsigned long disp_date;


  38. void fade();
  39. void fade1();
  40. /*************************** 看门狗子程序*************************/
  41. void watchdog_timer()
  42. {
  43. if(WDT_NUM==5)
  44. {
  45. WDT_NUM=0;
  46. led_wd=!led_wd;
  47. }
  48. WDT_NUM++;
  49. WDT_CONTR=0x3f;
  50. }
  51. /******************************************************************/
  52. void delay(unsigned int cnt)
  53. {
  54. while(--cnt);
  55. }

  56. /*--------------------------延时1ms程子程序-----------------------*/
  57. void delay_1ms(uint z)
  58. {
  59. uint x,y;
  60. for(x=z;x>0;x--)
  61. for(y=126;y>0;y--);
  62. }

  63. /*--------------------------延时1ms程子程序-----------------------*/
  64. delay1000()
  65. {
  66. uchar i,j;
  67. i=5;
  68. do{j=95;
  69. do{j--;}
  70. while(j);
  71. i--;
  72. }
  73. while(i);
  74. }
  75. /*---------------------------延时882us子程序-----------------------*/
  76. delay882()
  77. {
  78. uchar i,j;
  79. i=6;
  80. do{j=71;
  81. do{j--;}
  82. while(j);
  83. i--;
  84. }while(i);
  85. }
  86. /*--------------------------延时2400us程子程序-----------------------*/
  87. delay2400()
  88. {
  89. uchar i,j;
  90. i=5;
  91. do{j=237;
  92. do{j--;}
  93. while(j);
  94. i--;
  95. }while(i);
  96. }

  97. /**********************************************************************/
  98. /*
  99. void display()
  100. {
  101. uchar i;
  102. for(i=0;i<8;i++)
  103. {
  104. P0=dofly[disp_date%10];//取显示数据,段码
  105. P2=seg[i]; //取位码
  106. delay_1ms(1);
  107. disp_date/=10;
  108. }
  109. }
  110. */
  111. /*********************************************************************/

  112. uchar EEPROM_read(uint addr)//EEPROM字节读
  113. {
  114. ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M
  115. ISP_CMD=1; //字节读
  116. ISP_ADDRH=(addr&0xff00)>>8;
  117. ISP_ADDRL=addr&0x00ff;
  118. ISP_TRIG=0x46;
  119. ISP_TRIG=0xb9;
  120. _nop_();
  121. _nop_();

  122. return ISP_DATA;
  123. }
  124. //--------------------------------------------------------------------
  125. void EEPROM_write(uint addr,uchar dat)//EEPROM字节写
  126. {
  127. ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M
  128. ISP_CMD=2; //字节编程
  129. ISP_ADDRH=(addr&0xff00)>>8;
  130. ISP_ADDRL=addr&0x00ff;
  131. ISP_DATA=dat;
  132. ISP_TRIG=0x46;
  133. ISP_TRIG=0xb9;
  134. _nop_();
  135. _nop_();
  136. }
  137. //--------------------------------------------------------------------

  138. void EEPROM_ERASE(uint addr)//EEPROM扇区擦除
  139. {
  140. ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M
  141. ISP_CMD=3; //扇区擦除
  142. ISP_ADDRH=(addr&0xff00)>>8;
  143. ISP_ADDRL=addr&0x00ff;
  144. ISP_TRIG=0x46;
  145. ISP_TRIG=0xb9;
  146. _nop_();
  147. _nop_();
  148. }

  149. //**************************************************************

  150. /*----------------------------------------------------------*/
  151. /*-----------------------红外解码程序(核心)-----------------*/
  152. /*----------------------------------------------------------*/
  153. void IR_decode()
  154. {
  155. uchar i,j;
  156. while(IR_RE==0);
  157. delay2400();
  158. if(IR_RE==1) //延时2.4ms后如果是高电平则是新码
  159. {
  160. delay1000();
  161. delay1000();

  162. for(i=0;i<4;i++)
  163. {
  164. for(j=0;j<8;j++)
  165. {
  166. while(IR_RE==0); //等待地址码第1位高电平到来
  167. delay882(); //延时882us判断此时引脚电平
  168. ///CY=IR_RE;
  169. if(IR_RE==0)
  170. {
  171. date[i]>>=1;
  172. date[i]=date[i]|0x00;
  173. }
  174. else if(IR_RE==1)
  175. {
  176. delay1000();
  177. date[i]>>=1;
  178. date[i]=date[i]|0x80;
  179. }
  180. } //1位数据接收结束
  181. } //32位二进制码接收结束
  182. }
  183. }

  184. /*
  185. void LED_PWM()
  186. {
  187. lade_2=num; //384
  188. lade_4=num; //384
  189. while(lade_2!=0&Flag2==1)
  190. {
  191. for(lade_3=512;lade_3>lade_4;lade_3--)
  192. //512
  193. {
  194. led_port=0x00;
  195. delay(1);
  196. }
  197. lade_3=512; //512
  198. lade_4--;
  199. for(lade_1=0;lade_1<lade_2;lade_1++)
  200. {
  201. led_port=0x38; //c7
  202. delay(1);
  203. }
  204. lade_1=0;
  205. lade_2--;
  206. if(temp!=0x0c&Flag2==1)
  207. {
  208. lade_2=0;
  209. }
  210. lade_2=num; //384
  211. lade_4=num; //384
  212. }
  213. }
  214. */
  215. void calc()
  216. {
  217. EEPROM_read(0x2000);
  218. ee_temp1=ISP_DATA;

  219. ee_temp=ee_temp1&0x0f;

  220. //************************************* 1
  221. /*
  222. if(date[3]==0xff&Flag2==1)
  223. {
  224. if(num>=20)
  225. {
  226. num=num-80;
  227. }
  228. //else num=1;
  229. LED_PWM();
  230. }
  231. if(date[3]==0xfe&Flag2==1)
  232. {
  233. if(num<=500)
  234. {
  235. num=num+80;
  236. }
  237. // else num=511;
  238. LED_PWM();
  239. }

  240. if(ee_temp1==0xfd)
  241. {
  242. led_port=0x00;
  243. watchdog_timer();
  244. }
  245. if(ee_temp1==0xfc)
  246. {
  247. led_port=0x00;
  248. led_r=1;
  249. led_g=1;
  250. led_b=1;
  251. watchdog_timer();
  252. }
  253. */

  254. //********************************************** 2


  255. if(ee_temp1==0xfb)
  256. {
  257. led_port=0x00;
  258. led_r=1;
  259. watchdog_timer();
  260. }

  261. if(ee_temp1==0xfa)
  262. {
  263. led_port=0x00;
  264. led_g=1;
  265. watchdog_timer();
  266. }

  267. if(ee_temp1==0xf9)
  268. {
  269. led_port=0x00;
  270. led_b=1;
  271. watchdog_timer();
  272. }

  273. if(ee_temp1==0xf8)
  274. {
  275. led_port=0x00;
  276. led_r=1;
  277. led_g=1;
  278. led_b=1;
  279. watchdog_timer();
  280. }

  281. //************************************** 3

  282. if(ee_temp1==0xf7)
  283. {
  284. uint fade_1,fade_2,fade_3,fade_4;
  285. fade_2=448; //384
  286. fade_4=448; //384
  287. while(fade_2!=0&ee_temp==0x07)
  288. {
  289. for(fade_3=512;fade_3>fade_4;fade_3--)
  290. //512
  291. {
  292. led_port=0x10;
  293. delay(1);

  294. }
  295. fade_3=512; //512
  296. fade_4--;
  297. watchdog_timer();
  298. for(fade_1=0;fade_1<fade_2;fade_1++)
  299. {
  300. led_port=0x08;
  301. delay(1);
  302. }
  303. fade_1=0;
  304. fade_2--;
  305. if(ee_temp!=0x07)
  306. {
  307. fade_2=0;
  308. }
  309. watchdog_timer();
  310. fade_2=448; //384
  311. fade_4=448; //384
  312. }
  313. }
  314. if(ee_temp1==0xf6)
  315. {
  316. uint fade_1,fade_2,fade_3,fade_4;
  317. fade_2=448; //384
  318. fade_4=448; //384
  319. while(fade_2!=0&ee_temp==0x06)
  320. {
  321. for(fade_3=512;fade_3>fade_4;fade_3--)
  322. //512
  323. {
  324. led_port=0x20;
  325. delay(1);
  326. }
  327. fade_3=512; //512
  328. fade_4--;
  329. watchdog_timer();
  330. for(fade_1=0;fade_1<fade_2;fade_1++)
  331. {
  332. led_port=0x10;
  333. delay(1);

  334. }
  335. fade_1=0;
  336. fade_2--;
  337. if(ee_temp!=0x06)
  338. {
  339. fade_2=0;
  340. }
  341. watchdog_timer();
  342. fade_2=448; //384
  343. fade_4=448; //384
  344. }
  345. }

  346. if(ee_temp1==0xf5)
  347. {
  348. uint fade_1,fade_2,fade_3,fade_4;
  349. fade_2=448; //384
  350. fade_4=448; //384
  351. while(fade_2!=0&ee_temp==0x05)
  352. {
  353. for(fade_3=512;fade_3>fade_4;fade_3--)
  354. //512
  355. {
  356. led_port=0x08;
  357. delay(1);
  358. }
  359. fade_3=512; //512
  360. fade_4--;
  361. watchdog_timer();
  362. for(fade_1=0;fade_1<fade_2;fade_1++)
  363. {
  364. led_port=0x20;
  365. delay(1);
  366. }
  367. fade_1=0;
  368. fade_2--;
  369. if(ee_temp!=0x05)

  370. {
  371. fade_2=0;
  372. }
  373. watchdog_timer();
  374. fade_2=448; //384
  375. fade_4=448; //384
  376. }
  377. }

  378. if(ee_temp1==0xf4)
  379. {
  380. while(ee_temp==4)
  381. {
  382. led_port=0x00;
  383. led_r=1;
  384. delay_1ms(200);

  385. led_port=0x00;
  386. led_r=1;
  387. led_g=1;
  388. delay_1ms(200);
  389. led_port=0x00;
  390. led_g=1;
  391. delay_1ms(200);
  392. watchdog_timer();
  393. led_port=0x00;
  394. led_g=1;
  395. led_b=1;
  396. delay_1ms(200);

  397. led_port=0x00;
  398. led_b=1;
  399. delay_1ms(200);

  400. led_port=0x00;
  401. led_b=1;
  402. led_r=1;
  403. delay_1ms(200);

  404. watchdog_timer();
  405. }
  406. }

  407. //************************************** 4
  408. if(ee_temp1==0xf3)
  409. {
  410. uint fade_1,fade_2,fade_3,fade_4;
  411. fade_2=416; //384
  412. fade_4=416; //384
  413. while(fade_2!=0&ee_temp==0x03)
  414. {
  415. for(fade_3=512;fade_3>fade_4;fade_3--)
  416. //512
  417. {
  418. led_port=0x10;
  419. delay(1);
  420. }
  421. fade_3=512; //512
  422. fade_4--;
  423. watchdog_timer();
  424. for(fade_1=0;fade_1<fade_2;fade_1++)
  425. {
  426. led_port=0x08;
  427. delay(1);
  428. }
  429. fade_1=0;
  430. fade_2--;
  431. if(ee_temp!=0x03)
  432. {
  433. fade_2=0;
  434. }
  435. watchdog_timer();
  436. fade_2=416; //384
  437. fade_4=416; //384
  438. }
  439. }
  440. if(ee_temp1==0xf2)
  441. {
  442. uint fade_1,fade_2,fade_3,fade_4;
  443. fade_2=384; //384
  444. fade_4=384; //384
  445. while(fade_2!=0&ee_temp==0x02)
  446. {
  447. for(fade_3=512;fade_3>fade_4;fade_3--)
  448. //512
  449. {
  450. led_port=0x20;
  451. delay(1);
  452. }
  453. fade_3=512; //512
  454. fade_4--;
  455. watchdog_timer();
  456. for(fade_1=0;fade_1<fade_2;fade_1++)
  457. {
  458. led_port=0x10;
  459. delay(1);
  460. }
  461. fade_1=0;
  462. fade_2--;
  463. if(ee_temp!=0x02)
  464. {
  465. fade_2=0;
  466. }
  467. watchdog_timer();
  468. fade_2=384; //384
  469. fade_4=384; //384
  470. }
  471. }
  472. if(ee_temp1==0xf1)
  473. {
  474. uint fade_1,fade_2,fade_3,fade_4;
  475. fade_2=348; //384
  476. fade_4=348; //384
  477. while(fade_2!=0&ee_temp==0x01)
  478. {
  479. for(fade_3=512;fade_3>fade_4;fade_3--)
  480. //512
  481. {
  482. led_port=0x08;
  483. delay(1);
  484. }

  485. fade_3=512; //512
  486. fade_4--;
  487. watchdog_timer();
  488. for(fade_1=0;fade_1<fade_2;fade_1++)
  489. {
  490. led_port=0x20;
  491. delay(1);
  492. }
  493. fade_1=0;
  494. fade_2--;
  495. if(ee_temp!=0x01)
  496. {
  497. fade_2=0;
  498. }
  499. watchdog_timer();
  500. fade_2=348; //384
  501. fade_4=348; //384
  502. }
  503. }

  504. if(ee_temp1==0xf0)
  505. {
  506. while(ee_temp==0)
  507. {
  508. led_port=0x00;
  509. led_r=1;
  510. delay_1ms(500);

  511. watchdog_timer();
  512. led_port=0x00;
  513. led_g=1;
  514. delay_1ms(500);
  515. led_port=0x00;
  516. led_b=1;
  517. delay_1ms(500);
  518. watchdog_timer();
  519. }
  520. }


  521. //******************************************** 5
  522. if(ee_temp1==0xef)
  523. {
  524. uint fade_1,fade_2,fade_3,fade_4;
  525. fade_2=384; //384
  526. fade_4=384; //384
  527. while(fade_2!=0&ee_temp==0x0f)
  528. {
  529. for(fade_3=512;fade_3>fade_4;fade_3--)
  530. //512
  531. {
  532. led_port=0x10;
  533. delay(1);
  534. }
  535. fade_3=512; //512
  536. fade_4--;
  537. watchdog_timer();
  538. for(fade_1=0;fade_1<fade_2;fade_1++)
  539. {
  540. led_port=0x08;
  541. delay(1);
  542. }
  543. fade_1=0;
  544. fade_2--;
  545. if(ee_temp!=0x0f)
  546. {
  547. fade_2=0;
  548. }
  549. watchdog_timer();
  550. fade_2=384; //384
  551. fade_4=384; //384
  552. }
  553. }
  554. if(ee_temp1==0xee)
  555. {
  556. uint fade_1,fade_2,fade_3,fade_4;
  557. fade_2=320; //384
  558. fade_4=320; //384
  559. while(fade_2!=0&ee_temp==0x0e)
  560. {
  561. for(fade_3=512;fade_3>fade_4;fade_3--)
  562. //512
  563. {
  564. led_port=0x20;
  565. delay(1);
  566. }
  567. fade_3=512; //512
  568. fade_4--;
  569. watchdog_timer();
  570. for(fade_1=0;fade_1<fade_2;fade_1++)
  571. {
  572. led_port=0x10;
  573. delay(1);
  574. }
  575. fade_1=0;
  576. fade_2--;
  577. if(ee_temp!=0x0e)
  578. {
  579. fade_2=0;
  580. }
  581. watchdog_timer();
  582. fade_2=320; //384
  583. fade_4=320; //384
  584. }
  585. }
  586. if(ee_temp1==0xed)
  587. {
  588. uint fade_1,fade_2,fade_3,fade_4;
  589. fade_2=320; //384
  590. fade_4=320; //384
  591. while(fade_2!=0&ee_temp==0x0d)
  592. {
  593. for(fade_3=512;fade_3>fade_4;fade_3--)
  594. //512
  595. {
  596. led_port=0x08;
  597. delay(1);
  598. }

  599. fade_3=512; //512
  600. fade_4--;
  601. watchdog_timer();
  602. for(fade_1=0;fade_1<fade_2;fade_1++)
  603. {
  604. led_port=0x20;
  605. delay(1);
  606. }
  607. fade_1=0;
  608. fade_2--;
  609. if(ee_temp!=0x0d)
  610. {
  611. fade_2=0;
  612. }
  613. watchdog_timer();
  614. fade_2=320; //384
  615. fade_4=320; //384
  616. }
  617. }
  618. if(ee_temp1==0xec)
  619. fade();
  620. //******************************************* 6
  621. if(ee_temp1==0xeb)
  622. {
  623. led_port=0x00;
  624. led_r=1;
  625. led_g=1;
  626. watchdog_timer();
  627. }
  628. if(ee_temp1==0xea)
  629. {
  630. led_port=0x00;
  631. //led_r=0;
  632. led_g=1;
  633. led_b=1;
  634. watchdog_timer();
  635. }
  636. if(ee_temp1==0xe9)
  637. {
  638. led_port=0x00;
  639. led_r=1;
  640. //led_g=0;
  641. led_b=1;
  642. watchdog_timer();
  643. }
  644. if(ee_temp1==0xe8)
  645. fade1();
  646. }

  647. void fade()
  648. {
  649. // uchar i;
  650. uint fade_1,fade_2,fade_3,fade_4;
  651. fade_2=512;
  652. fade_4=511;
  653. while(fade_2!=0&ee_temp==0x0c)
  654. {
  655. for(fade_3=512;fade_3>fade_4;fade_3--)
  656. {
  657. led_port=0x10;
  658. delay(1);

  659. }
  660. fade_3=512;
  661. fade_4--;
  662. watchdog_timer();
  663. for(fade_1=0;fade_1<fade_2;fade_1++)
  664. {
  665. led_port=0x08;
  666. delay(1);
  667. }
  668. fade_1=0;
  669. fade_2--;
  670. if(ee_temp!=0x0c)
  671. {
  672. fade_2=0;
  673. }
  674. }
  675. watchdog_timer();
  676. fade_2=512;
  677. fade_4=511;
  678. while(fade_2!=0&ee_temp==0x0c)
  679. {
  680. if(ee_temp!=0x0c)
  681. {
  682. fade_2=0;
  683. }
  684. for(fade_3=512;fade_3>fade_4;fade_3--)
  685. {
  686. led_port=0x20;
  687. delay(1);
  688. // watchdog_timer();
  689. }
  690. fade_3=512;
  691. fade_4--;
  692. watchdog_timer();
  693. for(fade_1=0;fade_1<fade_2;fade_1++)
  694. {
  695. led_port=0x10;
  696. delay(1);
  697. // watchdog_timer();
  698. }
  699. fade_1=0;
  700. fade_2--;
  701. }
  702. watchdog_timer();
  703. fade_2=512;
  704. fade_4=511;
  705. while(fade_2!=0&ee_temp==0x0c)
  706. {
  707. if(ee_temp!=0x0c)
  708. {
  709. fade_2=0;
  710. }
  711. for(fade_3=512;fade_3>fade_4;fade_3--)
  712. {
  713. led_port=0x08;
  714. delay(1);
  715. watchdog_timer();
  716. }
  717. fade_3=512;
  718. fade_4--;
  719. watchdog_timer();
  720. for(fade_1=0;fade_1<fade_2;fade_1++)
  721. {
  722. led_port=0x20;
  723. delay(1);
  724. watchdog_timer();
  725. }
  726. fade_1=0;
  727. fade_2--;
  728. }
  729. watchdog_timer();
  730. }

  731. void fade1()
  732. {
  733. // uchar i;

  734. uint fade_1,fade_2,fade_3,fade_4;
  735. fade_2=128;
  736. fade_4=127;
  737. while(fade_2!=0&ee_temp==0x08)
  738. {
  739. for(fade_3=128;fade_3>fade_4;fade_3--)
  740. {
  741. led_port=0x10;
  742. delay(1);
  743. }
  744. fade_3=128;
  745. fade_4--;

  746. for(fade_1=0;fade_1<fade_2;fade_1++)
  747. {
  748. led_port=0x08;
  749. delay(1);
  750. }
  751. fade_1=0;
  752. fade_2--;
  753. if(ee_temp!=0x08)
  754. {
  755. fade_2=0;
  756. }
  757. }
  758. watchdog_timer();
  759. fade_2=128;
  760. fade_4=127;
  761. while(fade_2!=0&ee_temp==0x08)
  762. {
  763. if(ee_temp!=0x08)
  764. {
  765. fade_2=0;
  766. }
  767. for(fade_3=128;fade_3>fade_4;fade_3--)
  768. {
  769. led_port=0x20;
  770. delay(1);
  771. }
  772. fade_3=128;
  773. fade_4--;
  774. for(fade_1=0;fade_1<fade_2;fade_1++)
  775. {
  776. led_port=0x10;
  777. delay(1);
  778. }
  779. fade_1=0;
  780. fade_2--;
  781. }
  782. watchdog_timer();
  783. fade_2=128;
  784. fade_4=127;
  785. while(fade_2!=0&ee_temp==0x08)
  786. {
  787. if(ee_temp!=0x08)
  788. {
  789. fade_2=0;
  790. }
  791. for(fade_3=128;fade_3>fade_4;fade_3--)
  792. {
  793. led_port=0x08;
  794. delay(1);
  795. }
  796. fade_3=128;
  797. fade_4--;
  798. for(fade_1=0;fade_1<fade_2;fade_1++)
  799. {
  800. led_port=0x20;
  801. delay(1);
  802. }
  803. fade_1=0;
  804. fade_2--;
  805. }
  806. watchdog_timer();
  807. }

  808. void init()
  809. {
  810. led_port=0x00;
  811. /*
  812. led_r=1;
  813. delay_1ms(500);

  814. led_port=0x00;
  815. led_g=1;
  816. delay_1ms(500);
  817. led_port=0x00;
  818. led_b=1;
  819. delay_1ms(500);
  820. led_port=0x00;
  821. */
  822. delay_1ms(2);
  823. WDT_CONTR=0x3f;
  824. delay_1ms(500);
  825. }

  826. //********************************
  827. void main()
  828. {
  829. init();
  830. Flag2=0;

  831. SP=0x60; //堆栈指针
  832. EX0=1; //允许外部中断0,用于检测红外遥控器按键
  833. EA=1;
  834. num=255;

  835. while(1)
  836. {
  837. calc();
  838. }
  839. }

  840. //********************************************************************
  841. /*------------------------外部中断0程序-------------------------*/
  842. /*------------------主要用于处理红外遥控键值--------------------*/
  843. void int0() interrupt 0
  844. {
  845. uchar i;
  846. Flag2=0; ///////
  847. k=0;
  848. EX0=0; //检测到有效信号关中断,防止干扰
  849. for(i=0;i<4;i++)
  850. {
  851. delay1000();
  852. if(IR_RE==1){k=1;} //刚开始为9ms的引导码.
  853. }
  854. led_port=0x00;
  855. if(k==0)
  856. {

  857. IR_decode(); //如果接收到的是有效信号,则调用解码程序

  858. if(date[3]>=0xe8)
  859. {
  860. if(date[3]<=0xfb)
  861. {
  862. temp1=date[3];

  863. EEPROM_ERASE(0x2000); //STC_EEROM_0X2000 temp1
  864. EEPROM_write(0x2000,temp1);

  865. EEPROM_read(0x2000);
  866. ee_temp1=ISP_DATA;
  867. ee_temp=ee_temp1&0x0f;
  868. /*
  869. temp=date[3]&0x0f;
  870. EEPROM_ERASE(0x2004); //STC_EEROM_0X2004 temp
  871. EEPROM_write(0x2004,temp);
  872. */
  873. }
  874. else
  875. {
  876. EEPROM_read(0x2000);
  877. ee_temp1=ISP_DATA;
  878. ee_temp=ee_temp1&0x0f;
  879. }

  880. }
  881. delay2400();
  882. delay2400();
  883. delay2400();
  884. delay_1ms(500);
  885. }
  886. EX0=1; //开外部中断,允许新的遥控按键
  887. }

  888. //*********************************************************************
复制代码





回复

使用道具 举报

ID:79544 发表于 2015-11-13 12:27 | 显示全部楼层
好资料谢谢分享。楼主屏蔽的语句是不用片内PWM的部分吗?求不用内部PWM的程序谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表