- INT_END
- MOVR1 , PCH_TEMP
- MOVPCH, R1
- SWAPR R1 , PSW_TEMP
- MOV PSW, R1
- IRET
- ;;;;;;;;;;;;;;中断部分结
- 束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
- ;;;;;;;;;;;;;;入口函数,主程
- 序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MAIN
- CALL INIT_ALL ;初始化寄存器
- CALL INIT_RAM ;初始化RAM
- LOOP
- INC UNIT ;个位数字的递增
- MOV R0 ,UNIT
- XOR R0 ,#0X0A
- JB PSW ,Z
- JMP C_DIS
- CLR UNIT
-
- INC DECADE ;十位数字的递增
- MOV R0 ,DECADE
- XOR R0 ,#0X0A
- JB PSW ,Z
- JMP C_DIS
- CLR DECADE
-
- INC HUNDRED ;百位数字的递增
- MOV R0 ,HUNDRED
- XOR R0 ,#0X0A
- JB PSW ,Z
- JMP C_DIS
- CLR HUNDRED
-
- INC THOUSAND ;千位数字的递增
- MOV R0 ,THOUSAND
- XOR R0 ,#0X0A
- JB PSW ,Z
- JMP C_DIS
- CLR THOUSAND
-
- C_DIS
- MOV R0,#0x33
- MOV DIS_DEL,R0 ;DIS_DEL是用来延时数值的递增用的,数值越
- 大,那么递增的速度就越慢
- CALL LED_DISPLAY ;数码管显示当前数值
- DECJZ DIS_DEL
- JMP $‐2 ;调整地址以当前地址减2的位置
- JMP LOOP
-
- CRET
- ;*************************************************************
- *****************
- ;* 函 数 名: INIT_ALL
- ;* 函数功能: 初始化函数,对各种寄存器的初始化
- ;* 入口参数: 无
- ;* 返 回: 无
- ;*************************************************************
- *****************
- INIT_ALL
- ;调入校准信息到控制寄存器
- CALL #0xFFF
- MOV OSCCAL0, R0 ;晶振校准0
- NOP
- NOP
- CALL #0xFFE
- MOV OSCCAL1, R0 ;晶振校准1
- NOP
- NOP
- ;选择工作频率
- MOV R0 ,#0x60
- MOV OSCCTL, R0 ;设置为8M
- ;端口初始化
- ;***端口初始化********
- MOV R0 ,#0x08
- MOV TR0, R0 ;设置P0端口为输入
- MOV R0 ,#0x00
- MOV TR1, R0 ;设置P1端口为输出
- MOV R0 ,#0X00
- MOV TR2, R0 ;设置P2端口为输出
-
- CLR P0
- CLR P1
- MOV R0 ,#0XF0 ;关闭数码管位选端
- MOV P2, R0
- CRET
- ;*************************************************************
- *****************
- ;* 函 数 名: LED_DISPLAY
- ;* 函数功能: 数码管显示函数,由4个8位LED灯显示
- ;* 入口参数: THOUSAND 千位 ,HUNDRED 百位 ,SMQ_S 十位, UNIT 个位 ,
- 每个数的范围 0~f
- ;* 返 回: 无
- ;*************************************************************
- *****************
- LED_DISPLAY
- MOV R0 , #0XE0
- MOV P2 , R0 ;打开数码管的 个位
- MOV R2 , UNIT
- CALL DIG_DATA
- MOV P1 , R0
- CALL DELAY
- CLR P1 ;消隐
- MOV R0 ,#0XF0
- MOV P2 , R0
-
- MOV R0 ,#0XD0
- MOV P2 , R0 ;打开数码管的 十位
- MOV R2 , DECADE
- CALL DIG_DATA
- MOV P1 , R0
- CALL DELAY
- CLR P1 ;消隐
- MOV R0 ,#0XF0
- MOV P2 , R0
- MOV R0 , #0XB0
- MOV P2 , R0 ;打开数码管的 百位
- MOV R2 , HUNDRED
- CALL DIG_DATA
- MOV P1 , R0
- CALL DELAY
- CLR P1 ;消隐
- MOV R0 ,#0XF0
- MOV P2 , R0
- MOV R0 , #0X70
- MOV P2 , R0 ;打开数码管的 千位
- MOV R2 , THOUSAND
- CALL DIG_DATA
- MOV P1 , R0
- CALL DELAY
- CLR P1 ;消隐
- MOV R0 ,#0XF0
- MOV P2 , R0
- CRET
- ;*************************************************************
- *****************
- ;* 函 数 名: DELAY
- ;* 函数功能: 延时函数,时间为1ms
- ;* 入口参数: 无
- ;* 返 回: 无
- ;*************************************************************
- *****************
- DELAY
- MOV R0,#0x12
- MOV DELAY_NUM1, R0
- LP0
- MOV R0,#0X12
- MOV DELAY_NUM2, R0
- LP1
- DECJZ DELAY_NUM2 ;DELAY_NUM2自减1,若为0,则跳过
- JMP LP1
- DECJZ DELAY_NUM1 ;DELAY_NUM1自减1,若为0,则跳过
- JMP LP0
- CRET ;子程序返回
- ;/************************************************************
- ******************
- ;* 函 数 名: init_RAM
- ;* 函数功能: 初始化RAM
- ;* 入口参数: 无
- ;* 返 回: 无
- ;*************************************************************
- *****************/
- INIT_RAM
- CLR R2 ;传递默认RAM值
- ; CLR RAM SET 0 BANK0
- CLR PSW ,RP0
- MOV R0 ,#0X80 ;起始地址0x80
- MOV R1 ,#0X20 ;操作个数
- CALL INIT_RAM_0
- ; CLR RAM SET 0 BANK1
- SET PSW ,RP0
- MOV R0 ,#0X80 ;起始地址0x80
- MOV R1 ,#0X01 ;操作个数
- CALL INIT_RAM_0
- ; 默认工作区域设定 BANK0
- CLR PSW ,RP0
- ; 其他变量的数值操作
-
-
-
- CRET
- ;;;;;;;;;;;;;;;;;;执行默认数值装载到RAM区
- INIT_RAM_0
- ST [R0],R2
- INC R0
- DECJZ R1
- JMP INIT_RAM_0
- CRET
-
- .end