采用单片机内部定时器0,在P2.0口产生一个周期为1ms(0.001s,1KHz),占空比为1/5(高电平持续200us)的方波,并同时使

weixin_42100684 2019-04-08 12:21:25
采用51单片机内部定时器0,在P2.0口产生一个周期为1ms(0.001s,1KHz),占空比为1/5(高电平持续200us)的方波,并同时使8位LED发光二极管轮流点亮,间隔约0.5s
...全文
1624 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy010101 2019-04-09
  • 打赏
  • 举报
回复
引用 1 楼 智者知已应修善业的回复:
https://blog.csdn.net/xianfajushi/article/details/81331101
这样要求精确度的,C语言行吗?
wdh1972 2019-04-08
  • 打赏
  • 举报
回复
没事给你发个以前的写,看那个定时器写个中断处理就可以了。不过要用汇编哦! //程序开始 code_SEG SEGMENT code //数据区名称定义 RSEG code_SEG ORG 0000H AJMP 0160H; //中断程序入口 ORG 0003H INT0_EXIT: LJMP EX0_ZHD_MAIN; RETI; ORG 000BH LJMP TIME0_ZHD_MAIN; RETI; ORG 0013H LJMP EX1_ZHD_MAIN; RETI; ORG 001BH LJMP TIME1_ZHD_MAIN; RETI; ORG 0023H //串口1中断入口 LJMP S1BUF_ZHD_MAIN; RETI; ORG 002BH RETI; ORG 0043H //串口2中断入口 LJMP S2BUF_ZHD_MAIN; RETI; ORG 0160H //系统初始化 #include <PROGRAM/COMMAND_SATR.ASM> //系统初始化子程序*/ NOP; NOP; MAIN: AJMP MAIN; //返回到系统工作主程序 /*---------子程序区-----------*/ #include <system/XT_RW1_MAIN.ASM> //系统任务线程1 #include <system/XT_RW2_MAIN.ASM> //系统任务线程2 #include <system/XT_RW3_MAIN.ASM> //系统任务线程3 #include <system/_CON_PZH_CHXJ.ASM> //<系统库>头文件定义 #include <system/XTxRW_T0ZHD_CHX.ASM> //系统多任务定时器中断子程序 #include <PROGRAM/EX_ZHD_CHXJ.ASM> //外部中断子程序 #include <PROGRAM/TIME1_ZHD_CHX.ASM> //定时器中断子程序 //STC系统子程序 #include <PROGRAM/STC_ADJC_CHX.ASM> //AD检测子程序 #include <PROGRAM/STC_PWM_CHX.ASM> //系统PWM定义 #include <PROGRAM/STC_FLASH_CHXJ.ASM> //STC单片机内部可擦写FLASH读写子程序 //系统子程序 #include <PROGRAM/S1BUF_ZHD_CHX.ASM> //<系统库>串口2中断处理子程序 #include <PROGRAM/S1BUF_DATA_OUT.ASM> //串口2中断输出处理子程序 #include <PROGRAM/S2BUF_ZHD_CHX.ASM> //<系统库>串口2中断处理子程序 #include <PROGRAM/S2BUF_DATA_OUT.ASM> //串口2中断输出处理子程序 #include <PROGRAM/CRC16M_IRAM_CHX.ASM> //<系统库>CRC16数据效验子程序 #include <PROGRAM/CRC16M_XRAM_CHX.ASM> //<系统库>CRC16数据效验子程序 #include <PROGRAM/CRC16M_CSHB.ASM> //<系统库>CRC16参数表 //#include <PROGRAM/I2C_RW_CHXJ.ASM> //<系统库>头文件定义 //#include <PROGRAM/SMALL_SUBB_CHX.ASM> //<系统库>小除法子程序 //#include <PROGRAM/CRC8_1_RAM_CHX.ASM> //<系统库>CRC8数据效验子程序 //#include <PROGRAM/CRC8_IRAM_CHX.ASM> //<系统库>定时器1中断处理子程序 //#include <PROGRAM/CRC8_XRAM_CHX.ASM> //<系统库>CRC8数据效验子程序 //#include <PROGRAM/DIN_ZHX_CHXJ.ASM> //数据输入寄存器指令解析子程序 //#include <PROGRAM/BCH_ZHX_CHXJ.ASM> //保持寄存器指令解析处理子程序 //#include <PROGRAM/BIT_BCD_CHXJ.ASM> //<系统库>二进制转十进制子程序 //#include <PROGRAM/MUL_CHXJ.asm> //<系统库>乘法子程序 //#include <PROGRAM/SUBB_CHXJ.asm> //<系统库>大除法子程序 END ////------------系统寄存器初始化------------ MOV R0,#080H; CLR A; CLR_RAM: MOV @R0,A; DJNZ R0,CLR_RAM; ;----------------------------------// //------------基础寄存器设置------------ MOV SP,#60H; //设置主程序栈起始地址 MOV TMOD,#21H; //time0:定时方式0 time1:定时方式2 MOV AUXR,#11000000B; //开启独立的波特率发生器打开双串口 MOV SCON,#040H; MOV TH1,#0E6H; MOV PCON,#80H; MOV IP,#008H; MOV IE,#090H; //打开定时器0中断 SETB TR0; //打开定时器0 SETB TR1; //打开定时器1 SETB REN; //管脚功能设置 MOV P0M0,#00000100B; MOV P1M0,#00001110B; MOV P2M0,#11110000B; MOV P3M0,#10110000B;

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧