#include<reg52.h> //52系列單片機頭文件
#include <intrins.h>
//初始化
void init(){
//中斷初始化
//IE
EA=1;//中斷總開關(guān)
ET0=1;//定時器0開關(guān)
//TCON
TF0=0;
TR0=1;
//TMOD
TMOD=0x01;//定時器0使用,工作方式1
//初始化預(yù)置值
TH0=0x3C;//預(yù)值為3c+b0=15536
TL0=0xB0;
//
P1=0x01;
}
void delay1s(){
#pragma asm
mov r5,#08h ;//1001.401ms
time1s_1: mov r6,#0f4h ;//125.173ms
time1s_2: mov r7,#0ffh ;//511us
djnz r7,$
djnz r6,time1s_2
djnz r5,time1s_1
#pragma endasm
}
void time0(void) interrupt 1 using 2{
delay1s();
#pragma asm
mov a,p1
rl a
mov p1,a
#pragma endasm
}
void main(void){
init();
while(1){};
}
初學(xué)單片機,記下學(xué)習(xí)路程#include <intrins.h>
//初始化
void init(){
//中斷初始化
//IE
EA=1;//中斷總開關(guān)
ET0=1;//定時器0開關(guān)
//TCON
TF0=0;
TR0=1;
//TMOD
TMOD=0x01;//定時器0使用,工作方式1
//初始化預(yù)置值
TH0=0x3C;//預(yù)值為3c+b0=15536
TL0=0xB0;
//
P1=0x01;
}
void delay1s(){
#pragma asm
mov r5,#08h ;//1001.401ms
time1s_1: mov r6,#0f4h ;//125.173ms
time1s_2: mov r7,#0ffh ;//511us
djnz r7,$
djnz r6,time1s_2
djnz r5,time1s_1
#pragma endasm
}
void time0(void) interrupt 1 using 2{
delay1s();
#pragma asm
mov a,p1
rl a
mov p1,a
#pragma endasm
}
void main(void){
init();
while(1){};
}
跑燈閃的時間間隔不是1s
//頭文件intrins.h介紹
內(nèi)部函數(shù) 描述
_crol_ 字符循環(huán)左移
_cror_ 字符循環(huán)右移
_irol_ 整數(shù)循環(huán)左移
_iror_ 整數(shù)循環(huán)右移
_lrol_ 長整數(shù)循環(huán)左移
_lror_ 長整數(shù)循環(huán)右移
_nop_ 空操作8051 NOP 指令
_testbit_ 測試并清零位8051 JBC 指令
DSN:http://www.shnenglu.com/Files/guojingjia2006/keil/main.DSN.rar內(nèi)部函數(shù) 描述
_crol_ 字符循環(huán)左移
_cror_ 字符循環(huán)右移
_irol_ 整數(shù)循環(huán)左移
_iror_ 整數(shù)循環(huán)右移
_lrol_ 長整數(shù)循環(huán)左移
_lror_ 長整數(shù)循環(huán)右移
_nop_ 空操作8051 NOP 指令
_testbit_ 測試并清零位8051 JBC 指令