kaily 发表于 2025-5-27 10:51:13


























乘风飞扬 发表于 2025-5-27 16:09:52

汇编程序-多文件项目

通过 "CSEGAT xx" 设置代码块起始地址。
通过 "xxx SEGMENT CODE" 设置代码块。
通过 "RSEG xxx" 切换到xxx代码块。
EXTRN CODE (xxx)   ;申明外部函数
PUBLICxxx               ;申明公共函数

main.asm
$include (AI8051U.INC)      ;包含头文件

EXTRN CODE (F_delay_ms)   ;申明外部函数

;=========================================================
    CSEG    AT      0       ;设置起始地址
    LJMP    MAIN

code_seg_main   SEGMENT CODE      ;设置程序段
                RSEG    code_seg_main   ; switch to main code segment

MAIN:
    MOV   WTST, #00H      ;设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    MOV   CKCON,#00H      ;提高访问XRAM速度
    ORL   P_SW2,#080H   ;使能访问XFR

    MOV   P4M1,#00000000B ;P42,P43设置推挽输出
    MOV   P4M0,#00001100B

    MOV   SP,#3FH
    CLR   P4.3      ;P43输出低电平

LOOP:
    CPL   P4.2      ;测试端口
    CPL   P4.3      ;测试端口
    LCALL   F_delay_ms;延时250ms
    JMP   LOOP

;=========================================================

    CSEG    AT0BH            ;1Timer0 interrupt
    LJMP    F_Timer0_Interrupt

int0_code_seg   SEGMENT CODE            ; segment for interrupt function
                RSEG    int0_code_seg   ; switch to int code segment

F_Timer0_Interrupt: ;Timer0 中断函数
    RETI

;=========================================================
    END

Delay.asm
$include (DELAY.INC)      ;包含头文件

code_seg_delaySEGMENT CODE      ;设置程序段
                RSEG    code_seg_delay   ; switch to delay code segment

;========================================================================
; 函数: F_delay_ms
; 描述: 延时子程序。
; 参数: ACC: 延时ms数.
; 返回: none.
; 版本: VER1.0
; 日期: 2013-4-1
; 备注: 除了ACCC和PSW外, 所用到的通用寄存器都入栈
;========================================================================

F_delay_ms:
    PUSH    02H   ;入栈R2
    PUSH    03H   ;入栈R3
    PUSH    04H   ;入栈R4

    MOV   R4,#250

L_delay_ms_1:
    MOV   WR2, #(Fosc_KHZ / 4)
   
L_delay_ms_2:
    DEC   WR2, #1         ;1T
    JNE   L_delay_ms_2    ;3T

    DJNZ    R4, L_delay_ms_1

    POP   04H   ;出栈R4
    POP   03H   ;出栈R3
    POP   02H   ;出栈R2
    RET

;========================================================================
    END
Delay.inc
Fosc_KHZ    EQU 40000   ;40000KHZ

PUBLICF_delay_ms      ;申明公共函数
参考例程下载:

kaily 发表于 2025-5-27 17:33:33




























kaily 发表于 2025-5-28 17:19:58





























kaily 发表于 7 天前







































kaily 发表于 5 天前

最新 AI8051U 数据手册 下载
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf










===================================================================
















P8-P29的内容请下载本页附件!












页: 1 2 3 4 5 6 [7]
查看完整版本: 深圳大学《单片机原理及接口技术》上机实验演示视频@Ai8051U