采用51單片機內部定時器0,在P2.0口產生一個周期為1ms(0.001s,1KHz),占空比為1/5(高電平持續200us)的方波,并同時使8位LED發光二極管輪流點亮,間隔約0.5s
uj5u.com熱心網友回復:
https://blog.csdn.net/xianfajushi/article/details/81331101uj5u.com熱心網友回復:
沒事給你發個以前的寫,看那個定時器寫個中斷處理就可以了。不過要用匯編哦!
//程式開始
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;
uj5u.com熱心網友回復:
這樣要求精確度的,C語言行嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/140384.html
標籤:單片機/工控
上一篇:JavaScript基礎速通
下一篇:那些常用卻又常忘記的css樣式
