누군가는 C에게이 간단한 어셈블리를 번역할 수 있습니까?

S

skyassasin16

Guest
제가 mikroC에 전체 초보자 해요, PIC16 프로그래밍 있는데 C. START로 ASM의이 부분을 번역하십시오 BTFSS PORTB, 0 GOTO START GOTO 고리 : NOP BSF PORTC, 1 개의 외침 DELAY_MS BCF PORTC, 1 GOTO LOOP 제가 잘못 포럼에 게시하고있다면 감사합니다, 모르겠어, 그래서 초보자 메신저 사과
 
명령 btfss 조금을 시험하는, 그 비트가 1로 같다면 다음 명령을 건너 뜁니다. 당신은 portB의 상태를 점검하고, 제로 진행 또는 실행하는 경우 루프를 시작으로 이동됩니다 NOP은 1 머신 사이클 지연 BSF 비트 스캔 앞으로 최소 유효 설정된 비트 (1 비트)의 소스 피연산자 (두 번째 피연산자)를 검색합니다 제공합니다. 최소 유효 1 비트가 발견되면, 그 비트 인덱스가 대상 피​​연산자 (첫번째 피연산자)에 저장됩니다. 소스 피연산자가 레지스터 또는 메모리 위치가 될 수 있으며 대상 피​​연산자는 레지스터입니다. 비트 지수는 소스 피연산자의 비트 0부터 오프셋 서명되지 않은 것입니다. 내용 소스 피연산자가 0 경우, 대상 피​​연산자의 내용은 정의되지 않는다.
 
미안 아저씨 합니다만, 전 C에 대한 구문이 아니라 각각의 설명이 필요합니다. 덕분에 어쨌든.
 
BTFSS PORTB, 0 GOTO START GOTO 고리 : 제가 변환하는 동안 가정 몇 가지가 있습니다, 주석 시작 표시 NOP BSF PORTC, 1 통화 DELAY_MS,이 코드 DELAY_MS 서브루틴에서이 정의되지 않은, 난 U가 정의한 것으로 가정 그건 ... BCF PORTC, 여기서 한 GOTO LOOP는 U는 CCS 정보 (PIC C) 컴파일러를 사용해야이 코드를 실행하려면 가능한 C 코드입니다. / / 코드는 여기서 끝나 (TRUE) {; delay_ms (1000); 내가 전에 output_low (PIN_C1)를 추정 / / 1 초 지연 output_high (PIN_C1)}하면서 / / 루프는 여기에 시작, (PIN_B0) 동안 / / 코드는 여기서 시작됩니다 개인적으로 이것이 바로 포럼입니다,하지만 U는 그룹 (PIC 마이크로 컨트롤러)에 가입하도록 충고, u는 거기에 많은 도움을받을 수 ... Regardz Ayaz 아메드
 
안녕하세요, Ayaz의 번역은 괜찮은이지만 약간의 불일치 (시작시)이 있습니다 : / / 코드 동안 (PIN_B0) 여기에서 시작된 최초의 C 라인을 수정, /, / /​​ 무한 루프 PIN_B0 == 1 ~ 동안 (PIN_B0 == 0) 동안 PIN_B0 == 0 상태 / 무한 루프는 원래 assemby 루프가 있었기 때문 : START : BTFSS PORTB, 0; 수단 : B T 동부 표준시 portb 0와 S 킵 다음 명령어가있다면 S 동부 표준시 (1과 동일) GOTO START
 
빠른 답변 주셔서 감사합니다, 나는 논리를 얻을. 하나 더 질문은, CCS 정보 (PIC C) 컴파일러의 구문은 mikroC에서와 동일합니까?
 
[견적 = ckshivaram; 841264] 명령 btfss은 비트를 검사하고 해당 비트가 1로 같다면 다음 명령을 건너 뜁니다. ... BSF - 앞으로 비트 스캔 ... [/ 인용] 안녕 ckshivaram, 죄송하지만, 위의 설명에 대해서는 X86 '의 BSF 명령. PIC의 BSF는 간단한 B S 동부 표준시 등본 F ile (RAM)을 ...
 
[견적 = skyassasin16; 841246] 나는 mikroC에 전체 초보자 해요, PIC16 프로그래밍하고, C의 초보자에게 ASM의 일부를 번역하십시오 [/ 인용] 안녕 skyassasin16 이건 mikroC 프로 코드입니다. 16f877a 무효 메인 () {TRISB0_bit = 1; 입력에 / / PORTB0 세트 TRISC1_bit = 0; / / PORTC1 세트 출력 PORTB = 0; PORTC = 0; 동안 (PORTB == 0); 동안 (1) {PORTC.F1 = 1; / / PORTC1 높은 Delay_ms (200)에 집합, PORTC.F1 = 0; 낮은 Delay_ms (200)에 / / PORTC1 세트;}}
 
너무나 여러분 고마워요! 지금 나는 결국이 같은 해결 표시할 수 있습니다! ;)
 

Welcome to EDABoard.com

Sponsor

Back
Top