51单片机之-跑马灯

51单片机之-跑马灯
#include < reg52.h >   // 52系列单片机头文件
#include  < intrins.h >
// 初始化

void  init(){
    
// 中断初始化
    
// IE
    EA = 1 ; // 中断总开关
    ET0 = 1 ; // 定时器0开关

    
// TCON
    TF0 = 0 ;
    TR0
= 1 ;

    
// TMOD
    TMOD = 0x01 ; // 定时器0使用,工作方式1

    
// 初始化预置值
    TH0 = 0x3C ; // 预值为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介绍
内部函数 描述
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作8051 NOP 指令
_testbit_ 测试并清零位8051 JBC 指令 
DSN: http://www.cppblog.com/Files/guojingjia2006/keil/main.DSN.rar

你可能感兴趣的:(51单片机之-跑马灯)