日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]嘗試使用一下6410的匯編,發(fā)現(xiàn)跟當年的51差不多,一步一步的學習;*************************************************************************************************************;*文件名:ok6410.s;*功能:S3C641

嘗試使用一下6410的匯編,發(fā)現(xiàn)跟當年的51差不多,一步一步的學習

;*************************************************************************************************************

;*文件名:ok6410.s

;*功能:S3C6410匯編

;*作者:cp1300@139.com

;*創(chuàng)建時間:2013年1月4日21:27

;*最后修改時間:2013年1月4日

;*詳細:

;*************************************************************************************************************/

TINT_CSTATEQU0x7F006044;定時器中斷控制和狀態(tài)寄存器

VIC0ADDRESSEQU0x71200F00;當前矢量地址寄存器0,寫入任意數(shù)據(jù)清除中斷

VIC1ADDRESSEQU0x71300F00;當前矢量地址寄存器1,寫入任意數(shù)據(jù)清除中斷

;調(diào)用外部函數(shù)

IMPORTLED1_flash;LED1閃爍程序

;外部調(diào)用函數(shù)

EXPORTTime_Isr;時鐘中斷服務程序

PRESERVE8;

AREAS3C6410_CPU,CODE,READONLY

;定時器1中斷服務程序,注意:進入中斷后6410自動切換為IRQ模式,并關閉了IRQ中斷,退出的時候需要自己開啟,或者還原CPSR

Time_Isr

STMFDSP!,{R0,R1,LR};R0,R1,LR入棧

LDRR0,=TINT_CSTAT

LDRR1,[R0];讀取寄存器TINT_CSTAT

ORRR1,R1,#0x01<<6;寫B(tài)IT6,清除定時器1中斷

STRR1,[R0];回寫寄存器

BLLED1_flash;調(diào)用LED閃爍程序

LDRR0,=VIC0ADDRESS;寫VIC的當前中斷地址寄存器清除中斷

LDRR1,=0xffffffff

STRR1,[R0]

LDRR0,=VIC1ADDRESS

STRR1,[R0]

LDMFDSP!,{R0,R1,LR};R0,R1,LR出棧

;之前使用SUB,發(fā)現(xiàn)程序從中斷退出后并沒有從SPSR恢復,也就是中斷屏蔽沒有去除,添加-S后,這條指令會影響CPSR中標志位,在這也就是恢復了SPSR_IRQ到CRSP

SUBSPC,LR,#4;從中斷程序中退出,LR需要減4放入PC,子程序調(diào)用則不需要-4,應該是由于流水線的指令預取造成的

END


/*************************************************************************************************************

;*文件名:ok6410.h

;*功能:S3C6410匯編函數(shù)定義

;*作者:cp1300@139.com

;*創(chuàng)建時間:2013年1月4日21:27

;*最后修改時間:2013年1月4日

;*詳細:

;*************************************************************************************************************/

#ifndefS3C6410_H_

#defineS3C6410_H_

voidTime_Isr(void);//定時器1中斷服務程序

#endif/*S3C6410_H_*/



#include"system.h"

#include"uart.h"

#include"tft_lcd.h"

#include"other.h"

#include"delay.h"

#include"timer.h"

#include"s3c6410.h"

voidLED1_flash(void);

/*************************************************************************************************************************

*函數(shù):voidTimer_Init(u32RTime,FunctionalStateEnInt,void(*TimerIsr)(void))

*功能:定時器1初始化函數(shù)

*參數(shù):無

*返回:無

*依賴:底層宏定義

*作者:cp1300@139.com

*時間:20120520

*最后修改時間:20120520

*說明:定時器0和定時器1共用預分頻器

*************************************************************************************************************************/

voidTimer_Init(u32RTime,FunctionalStateEnInt,void(*TimerIsr)(void))

{

rTCFG0|=65;//定時器0預分頻65+1,由PCLK=66提供時鐘,66分頻產(chǎn)生1MHz的定時器時鐘,

rTCON&=(~0xff00);//清除設置

rTCON|=BIT11;//定時器1自動更新使能

rTCNTB1=RTime;//重裝值

rTINT_CSTAT|=BIT6;//清除中斷標志

rTINT_CSTAT|=(EnInt==ENABLE)?BIT1:0;//使能定時器0中斷

Set_IsrAddr(INT_TIMER1,(u32)TimerIsr);//設置中斷矢量入口

Set_IntEnable(INT_TIMER1,EnInt);//使能定時器1全局中斷

//以下操作啟動定時器0

rTCON|=BIT9;//手動更新

rTCON&=~BIT9;//結束手動更新

rTCON|=BIT8;//啟動定時器0

}

//主函數(shù)

intmain(void)

{

//u16data;

UART0_Init(DISABLE,11520

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉